]> granicus.if.org Git - apache/commitdiff
Merge r1557641, r1559394, r1559398 from trunk:
authorJim Jagielski <jim@apache.org>
Thu, 23 Jan 2014 14:33:09 +0000 (14:33 +0000)
committerJim Jagielski <jim@apache.org>
Thu, 23 Jan 2014 14:33:09 +0000 (14:33 +0000)
don't search for directory indexes/directoryslashes if a URL is in the
middle of being rewritten [in per-dir context]. PR53929

followups to r1557641 suggested by nd -- add
prefix to both the macro and the handler name
itself.

no make depend in sandbox, fix bld break from r1559394

Submitted by: covener
Reviewed/backported by: jim

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1560697 13f79535-47bb-0310-9956-ffa450edef68

STATUS
include/ap_mmn.h
modules/mappers/mod_dir.c
modules/mappers/mod_rewrite.c
modules/mappers/mod_rewrite.h

diff --git a/STATUS b/STATUS
index 6045fdc20e9c7d36939c6842fd29ac7af0ec141b..138027f89f59843b16501844a66a20bc700bdafb 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -98,15 +98,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-  * mod_dir: stop trying to index or redirect requests that are halfway
-    through being rewritten by per-dir mod_rewrite. Old releases would skip any
-    unknown r->handler. PR53929
-    trunk patch: http://svn.apache.org/r1557641 
-                 http://svn.apache.org/r1559394
-                 http://svn.apache.org/r1559398
-    2.4.x patch: http://people.apache.org/~covener/patches/2.4.x-moddir_skip_rewritten.diff
-                 (skips change of handler name)
-    +1: covener, minfrin, jim
 
   * mod_session: Fix problems interpreting the SessionInclude and
     SessionExclude configuration.
index c95274246e06c70fb19b0fdf170fd199bedb8e26..c1649323291a76534d9eb7d769eacf2480eb8ca4 100644 (file)
  * 20120211.27 (2.4.7-dev) Add ap_podx_restart_t and ap_mpm_podx_*
  * 20120211.28 (2.4.7-dev) Add ap_regname
  * 20120211.29 (2.4.7-dev) Add uds_path to proxy_conn_rec
+ * 20120211.30 (2.4.7-dev) REWRITE_REDIRECT_HANDLER_NAME in mod_rewrite.h
  */
 
 #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
 #ifndef MODULE_MAGIC_NUMBER_MAJOR
 #define MODULE_MAGIC_NUMBER_MAJOR 20120211
 #endif
-#define MODULE_MAGIC_NUMBER_MINOR 29                   /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 30                   /* 0...n */
 
 /**
  * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
index 9707ad50bec739a6299ccee6f25aee67098992ae..2316c532203cd48f42e50e0dc076c396bdb20d21 100644 (file)
@@ -29,6 +29,7 @@
 #include "http_log.h"
 #include "http_main.h"
 #include "util_script.h"
+#include "mod_rewrite.h"
 
 module AP_MODULE_DECLARE_DATA dir_module;
 
@@ -260,6 +261,11 @@ static int fixup_dir(request_rec *r)
         return HTTP_MOVED_PERMANENTLY;
     }
 
+    /* we're running between mod_rewrites fixup and its internal redirect handler, step aside */
+    if (!strcmp(r->handler, REWRITE_REDIRECT_HANDLER_NAME)) { 
+        return DECLINED;
+    }
+
     if (d->index_names) {
         names_ptr = (char **)d->index_names->elts;
         num_names = d->index_names->nelts;
index 0ac4dc9d6a0dfcb00fa09f762e928c299f5690cb..52b9e1e0f52352862e112865f76f21ebc69e5be3 100644 (file)
@@ -5004,7 +5004,7 @@ static int hook_fixup(request_rec *r)
             rewritelog((r, 1, dconf->directory, "internal redirect with %s "
                         "[INTERNAL REDIRECT]", r->filename));
             r->filename = apr_pstrcat(r->pool, "redirect:", r->filename, NULL);
-            r->handler = "redirect-handler";
+            r->handler = REWRITE_REDIRECT_HANDLER_NAME;
             return OK;
         }
     }
@@ -5050,7 +5050,7 @@ static int hook_mimetype(request_rec *r)
  */
 static int handler_redirect(request_rec *r)
 {
-    if (strcmp(r->handler, "redirect-handler")) {
+    if (strcmp(r->handler, REWRITE_REDIRECT_HANDLER_NAME)) {
         return DECLINED;
     }
 
index 040baeeac1a6d87f7eaf085e2d597877d48e8924..8fa158eccab0a09d5608f49ec35127d429304ce4 100644 (file)
@@ -29,6 +29,8 @@
 #include "apr_optional.h"
 #include "httpd.h"
 
+#define REWRITE_REDIRECT_HANDLER_NAME "redirect-handler"
+
 /* rewrite map function prototype */
 typedef char *(rewrite_mapfunc_t)(request_rec *r, char *key);