From: Jim Jagielski Date: Tue, 1 May 2007 13:22:27 +0000 (+0000) Subject: Merge r527969 from trunk: X-Git-Tag: 2.2.5~269 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=545f73efebf26aeb7e363619be06ddf27d395186;p=thirdparty%2Fapache%2Fhttpd.git Merge r527969 from trunk: HTTP proxy ProxyErrorOverride: Leave 1xx and 3xx responses alone. Only processing of error responses (4xx, 5xx) will be altered. PR: 39245 This is based on a patch submitted by Bart van der Schans and tweaked slightly by me based on discussions on dev@ since April 2006. I think rpleum was the first to mention the 1xx issue. Submitted by: trawick Reviewed by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@534068 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 172aa817a40..0321a6b8223 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.2.5 + *) HTTP proxy ProxyErrorOverride: Leave 1xx and 3xx responses alone. Only + processing of error responses (4xx, 5xx) will be altered. PR 39245. + [Jeff Trawick, Bart van der Schans ] + *) htdbm: Enable crypt support on platforms with crypt() but not , such as z/OS. [David Jones ] diff --git a/docs/manual/mod/mod_proxy.xml b/docs/manual/mod/mod_proxy.xml index 1b677479c7d..8b15446bdce 100644 --- a/docs/manual/mod/mod_proxy.xml +++ b/docs/manual/mod/mod_proxy.xml @@ -1156,6 +1156,9 @@ header for proxied requests the error code and act accordingly (default behavior would display the error page of the proxied server, turning this on shows the SSI Error message).

+ +

This directive does not affect the processing of informational (1xx), + normal success (2xx), or redirect (3xx) responses.

diff --git a/modules/proxy/mod_proxy_http.c b/modules/proxy/mod_proxy_http.c index 5c0de67fc0d..ba19810a25e 100644 --- a/modules/proxy/mod_proxy_http.c +++ b/modules/proxy/mod_proxy_http.c @@ -1455,7 +1455,7 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r, * if we are overriding the errors, we can't put the content * of the page into the brigade */ - if (!conf->error_override || ap_is_HTTP_SUCCESS(r->status)) { + if (!conf->error_override || !ap_is_HTTP_ERROR(r->status)) { /* read the body, pass it to the output filters */ apr_read_type_e mode = APR_NONBLOCK_READ; int finish = FALSE; @@ -1564,7 +1564,7 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r, if (conf->error_override) { /* the code above this checks for 'OK' which is what the hook expects */ - if (ap_is_HTTP_SUCCESS(r->status)) + if (!ap_is_HTTP_ERROR(r->status)) return OK; else { /* clear r->status for override error, otherwise ErrorDocument