From: Eric Covener Date: Sat, 29 Nov 2008 13:09:36 +0000 (+0000) Subject: allow ap_invoke_handler() to pass-through AP_FILTER_ERROR as if it were X-Git-Tag: 2.3.0~72 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=46afcfe011335877ee542db35b943d2e10178a97;p=apache 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 --- 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?)