]> granicus.if.org Git - apache/commitdiff
Skip DirectoryIndex execution unless method is GET or POST, restoring
authorChris Darroch <chrisd@apache.org>
Sun, 26 Jan 2014 04:09:45 +0000 (04:09 +0000)
committerChris Darroch <chrisd@apache.org>
Sun, 26 Jan 2014 04:09:45 +0000 (04:09 +0000)
2.2 behavior when using mod_dav. PR 54914.

Otherwise, variable behavior results: if no DirectoryIndex file is found,
mod_dav's r->handler runs as expected.  But if an index file is found,
r->handler will be changed by ap_internal_fast_redirect() to something
other than mod_dav's r->handler, while r->method is left unchanged,
usually leading to a 405 response.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1561447 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/mappers/mod_dir.c

diff --git a/CHANGES b/CHANGES
index c938dc95437ced94eaed54fbb18b3b989ca1f240..8c2c47c0443265f18f245d2b62f4be827cf92311 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.0
 
+  *) mod_dir: Default to 2.2-like behavior and skip execution when method is
+     neither GET nor POST, such as for DAV requests. PR 54914. [Chris Darroch]
+
   *) mod_rewrite: Rename the handler that does per-directory internal 
      redirects to "rewrite-redirect-handler" from "redirect-handler" so
      it is less ambiguous and less likely to be reused. [Eric Covener]
index d2d9823e7c089947e79ed7813fc7ec48f93a0d7c..b076937e859d6b5e773c1ca1e32dbe593547291d 100644 (file)
@@ -274,6 +274,10 @@ static int fixup_dir(request_rec *r)
         return HTTP_MOVED_PERMANENTLY;
     }
 
+    if (r->method_number != M_GET && r->method_number != M_POST) {
+        return DECLINED;
+    }
+
     if (d->checkhandler == MODDIR_ON && strcmp(r->handler, DIR_MAGIC_TYPE)) {
         return DECLINED;
     }