From: Jeff Trawick Date: Tue, 8 Apr 2014 20:07:04 +0000 (+0000) Subject: mod_proxy_fcgi: Fix sending of response without some HTTP headers X-Git-Tag: 2.5.0-alpha~4335 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7775249b30ecf0887d06a88ad878ec35f21955bf;p=apache mod_proxy_fcgi: Fix sending of response without some HTTP headers that might be set by filters. The problem occurs when no body bytes were read while reading the response headers, resulting in an empty brigade being sent down the filter stack. One particualr filter that mishandles the empty initial brigade is mod_deflate. It neglects to add to the response header fields. PR: 55558 Submitted by: Jim Riggs Reviewed by: trawick git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1585824 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 2517204d71..6d63e906a1 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) mod_proxy_fcgi: Fix sending of response without some HTTP headers + that might be set by filters. [Jim Riggs ] + *) mod_rewrite: Add 'BNF' (backreferences-no-plus) flag to RewriteRule to allow spaces in backreferences to be encoded as %20 instead of '+'. [Eric Covener] diff --git a/modules/proxy/mod_proxy_fcgi.c b/modules/proxy/mod_proxy_fcgi.c index fff02ba59c..c36071e08a 100644 --- a/modules/proxy/mod_proxy_fcgi.c +++ b/modules/proxy/mod_proxy_fcgi.c @@ -593,7 +593,11 @@ recv_again: r->status = HTTP_OK; } - if (script_error_status == HTTP_OK) { + if (script_error_status == HTTP_OK + && !APR_BRIGADE_EMPTY(ob)) { + /* Send the part of the body that we read while + * reading the headers. + */ rv = ap_pass_brigade(r->output_filters, ob); if (rv != APR_SUCCESS) { break;