summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Covener <covener@apache.org>2008-11-29 14:09:36 +0100
committerEric Covener <covener@apache.org>2008-11-29 14:09:36 +0100
commit46afcfe011335877ee542db35b943d2e10178a97 (patch)
tree87a35542d6602cc41c953f5e64ed0369e73b93fb
parentcorrect syntax of DirectoryIndex feature, CHANGES only (diff)
downloadapache2-46afcfe011335877ee542db35b943d2e10178a97.tar.xz
apache2-46afcfe011335877ee542db35b943d2e10178a97.zip
allow ap_invoke_handler() to pass-through AP_FILTER_ERROR as if it were
a reserved status code (OK/DECLINED/SUSPENDED). Prevents ap_die() from seeing a 500 error when the http header filter has already taken care of the proper error response git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@721679 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--CHANGES5
-rw-r--r--server/config.c1
2 files changed, 6 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index ce84399c6c..6a84d28a1f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,11 @@
Changes with Apache 2.3.0
[ When backported to 2.2.x, remove entry from this file ]
+ *) core: Error responses set by filters were being coerced into 500 errors,
+ sometimes appended to the original error response. Log entry of:
+ 'Handler for (null) returned invalid result code -3'
+ [Eric Covener]
+
*) mod_buffer: Honour the flush bucket and flush the buffer in the
input filter. Make sure that metadata buckets are written to
the buffer, not to the final brigade. [Graham Leggett]
diff --git a/server/config.c b/server/config.c
index 9dbeb25efb..ddf31734f6 100644
--- a/server/config.c
+++ b/server/config.c
@@ -382,6 +382,7 @@ AP_CORE_DECLARE(int) ap_invoke_handler(request_rec *r)
"handler \"%s\" not found for: %s", r->handler, r->filename);
}
if ((result != OK) && (result != DONE) && (result != DECLINED) && (result != SUSPENDED)
+ && (result != AP_FILTER_ERROR) /* ap_die() knows about this specifically */
&& !ap_is_HTTP_VALID_RESPONSE(result)) {
/* If a module is deliberately returning something else
* (request_rec in non-HTTP or proprietary extension?)