You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
2.5 KiB
49 lines
2.5 KiB
--- a/modules/proxy/mod_proxy_fcgi.c 2015/01/09 21:25:26 1650676 |
|
+++ b/modules/proxy/mod_proxy_fcgi.c 2015/01/09 21:33:12 1650677 |
|
@@ -367,7 +367,7 @@ |
|
request_rec *r, int request_id) |
|
{ |
|
apr_bucket_brigade *ib, *ob; |
|
- int seen_end_of_headers = 0, done = 0; |
|
+ int seen_end_of_headers = 0, done = 0, ignore_body = 0; |
|
apr_status_t rv = APR_SUCCESS; |
|
int script_error_status = HTTP_OK; |
|
conn_rec *c = r->connection; |
|
@@ -577,9 +577,16 @@ |
|
APR_BRIGADE_INSERT_TAIL(ob, tmp_b); |
|
r->status = status; |
|
ap_pass_brigade(r->output_filters, ob); |
|
- ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01070) |
|
- "Error parsing script headers"); |
|
- rv = APR_EINVAL; |
|
+ if (status == HTTP_NOT_MODIFIED) { |
|
+ /* The 304 response MUST NOT contain |
|
+ * a message-body, ignore it. */ |
|
+ ignore_body = 1; |
|
+ } |
|
+ else { |
|
+ ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01070) |
|
+ "Error parsing script headers"); |
|
+ rv = APR_EINVAL; |
|
+ } |
|
break; |
|
} |
|
|
|
@@ -598,7 +605,7 @@ |
|
r->status = HTTP_OK; |
|
} |
|
|
|
- if (script_error_status == HTTP_OK) { |
|
+ if (script_error_status == HTTP_OK && !ignore_body) { |
|
rv = ap_pass_brigade(r->output_filters, ob); |
|
if (rv != APR_SUCCESS) { |
|
break; |
|
@@ -626,7 +633,7 @@ |
|
* but that could be a huge amount of data; so we pass |
|
* along smaller chunks |
|
*/ |
|
- if (script_error_status == HTTP_OK) { |
|
+ if (script_error_status == HTTP_OK && !ignore_body) { |
|
rv = ap_pass_brigade(r->output_filters, ob); |
|
if (rv != APR_SUCCESS) { |
|
break;
|
|
|