From: Jim Jagielski Date: Mon, 10 Oct 2016 12:24:47 +0000 (+0000) Subject: Merge r1759984, r1760018 from trunk: X-Git-Tag: 2.4.24~205 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b4e13f8c5ed6bc085b3f21b3e682576a487b6de;p=thirdparty%2Fapache%2Fhttpd.git Merge r1759984, r1760018 from trunk: mod_proxy_fcgi: handle the HTTP 412 use case This is a follow up of http://svn.apache.org/r1752347; ap_meet_conditions could return a 412 status that if not handled causes subsequent bogus reads and wrong messages logged (like AH01070). After a chat on dev@ the feedback was to couple HTTP_NOT_MODIFIED with HTTP_PRECONDITION_FAILED, but any other feedback is welcome. Fix stupid mistake introduced in r1759984 Submitted by: elukey Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1764075 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/STATUS b/STATUS index 61c962a3fef..ac3182e8b35 100644 --- a/STATUS +++ b/STATUS @@ -117,14 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mod_proxy_fcgi: read the whole FCGI response even for HTTP Precondition - failed (412) responses to avoid subsequent bogus reads and - confusing error messages logged. - trunk patch: http://svn.apache.org/r1759984 - http://svn.apache.org/r1760018 - 2.4.x patch: trunk works - +1 elukey, jim, ylavic - *) mod_proxy: add log trace points to help users diagnose problems with ProxyPass[Match]. trunk patch: http://svn.apache.org/r1762517 diff --git a/modules/proxy/mod_proxy_fcgi.c b/modules/proxy/mod_proxy_fcgi.c index 943e04dc459..a11757c5a72 100644 --- a/modules/proxy/mod_proxy_fcgi.c +++ b/modules/proxy/mod_proxy_fcgi.c @@ -660,13 +660,17 @@ recv_again: *err = "passing headers brigade to output filters"; break; } - else if (status == HTTP_NOT_MODIFIED) { - /* The 304 response MUST NOT contain - * a message-body, ignore it. + else if (status == HTTP_NOT_MODIFIED + || status == HTTP_PRECONDITION_FAILED) { + /* Special 'status' cases handled: + * 1) HTTP 304 response MUST NOT contain + * a message-body, ignore it. + * 2) HTTP 412 response. * The break is not added since there might * be more bytes to read from the FCGI * connection. Even if the message-body is - * ignored we want to avoid subsequent + * ignored (and the EOS bucket has already + * been sent) we want to avoid subsequent * bogus reads. */ ignore_body = 1; }