Commit 9dbd74ee authored by Jim Jagielski's avatar Jim Jagielski
Browse files

Merge r1753167 from trunk:

mod_proxy_fcgi: avoid loops serving proxied error documents

This commit should solve the issue indicated in PR 55415.
Httpd loops while serving a error document if:
1) The error document's content is proxied.
2) ProxyErrorOverride is set.
The solution proposed is to limit the use of ap_die only
to the initial request. I tested the change with very basic
scenarios but I am not sure if I got all the use cases,
feedback is really welcome.


Submitted by: elukey
Reviewed/backported by: jim


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1757671 13f79535-47bb-0310-9956-ffa450edef68
parent 370e6b4f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2,6 +2,9 @@

Changes with Apache 2.4.24

  *) mod_proxy_fcgi: avoid loops when ProxyErrorOverride is enabled
     and the error documents are proxied. PR 55415. [Luca Toscano]

  *) mod_proxy_fcgi: read the whole FCGI response even when the content has
     not been modified (HTTP 304) to avoid subsequent bougus reads and
     confusing error messages logged. [Luca Toscano]
+0 −5
Original line number Diff line number Diff line
@@ -117,11 +117,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

  *) mod_proxy_fcgi: avoid loops serving proxied error documents.
     trunk patch: http://svn.apache.org/r1753167
     2.4.x patch: trunk works (modulo CHANGES)
     +1: elukey, ylavic, sf

  *) mod_http: Add the HEAD method to the lookup hash for completeness.
      Trunk version of patch:
         http://svn.apache.org/r1753257
+2 −2
Original line number Diff line number Diff line
@@ -678,8 +678,8 @@ recv_again:
                                }
                            }

                            if (conf->error_override &&
                                ap_is_HTTP_ERROR(r->status)) {
                            if (conf->error_override
                                && ap_is_HTTP_ERROR(r->status) && ap_is_initial_req(r)) {
                                /*
                                 * set script_error_status to discard
                                 * everything after the headers