Commit 201f9bcc authored by Jim Jagielski's avatar Jim Jagielski
Browse files

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 <schans hippo.nl>
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
parent 5237a1f7
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
                                                        -*- 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 <schans hippo.nl>]
  *) htdbm: Enable crypt support on platforms with crypt() but not
     <crypt.h>, such as z/OS. [David Jones <oscaremma gmail.com>]
+3 −0
Original line number Diff line number Diff line
@@ -1156,6 +1156,9 @@ header for proxied requests</description>
    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).</p>

    <p>This directive does not affect the processing of informational (1xx),
    normal success (2xx), or redirect (3xx) responses.</p>
</usage>
</directivesynopsis>

+2 −2
Original line number Diff line number Diff line
@@ -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