]> granicus.if.org Git - apache/commitdiff
allow ap_invoke_handler() to pass-through AP_FILTER_ERROR as if it were
authorEric Covener <covener@apache.org>
Sat, 29 Nov 2008 13:09:36 +0000 (13:09 +0000)
committerEric Covener <covener@apache.org>
Sat, 29 Nov 2008 13:09:36 +0000 (13:09 +0000)
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

CHANGES
server/config.c

diff --git a/CHANGES b/CHANGES
index ce84399c6c8dec1f2d675eaa350177c7cddbf94d..6a84d28a1fc0ac6fe7d56d02b6aabbdfd5ce6274 100644 (file)
--- 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]
index 9dbeb25efb04e4f7b92f2992459fe16650d58d54..ddf31734f6dcb560ff88c3af6dc7561e6f6bbbfc 100644 (file)
@@ -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?)