From 0afcfa4673e07d7622a60ef6a92006110d18850f Mon Sep 17 00:00:00 2001 From: Chris Darroch Date: Sun, 26 Jan 2014 04:09:45 +0000 Subject: [PATCH] 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 --- CHANGES | 3 +++ modules/mappers/mod_dir.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/CHANGES b/CHANGES index c938dc95437..8c2c47c0443 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 d2d9823e7c0..b076937e859 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; } -- 2.47.3