From: Chris Darroch Date: Sun, 26 Jan 2014 04:09:45 +0000 (+0000) Subject: Skip DirectoryIndex execution unless method is GET or POST, restoring X-Git-Tag: 2.5.0-alpha~4589 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5a1062d2757c8c92f519faef019b669456d37bb8;p=apache Skip DirectoryIndex execution unless method is GET or POST, restoring 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 --- diff --git a/CHANGES b/CHANGES index c938dc9543..8c2c47c044 100644 --- 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] diff --git a/modules/mappers/mod_dir.c b/modules/mappers/mod_dir.c index d2d9823e7c..b076937e85 100644 --- a/modules/mappers/mod_dir.c +++ b/modules/mappers/mod_dir.c @@ -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; }