You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rp...@apache.org on 2010/12/23 12:10:56 UTC
svn commit: r1052224 - /httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
Author: rpluem
Date: Thu Dec 23 11:10:56 2010
New Revision: 1052224
URL: http://svn.apache.org/viewvc?rev=1052224&view=rev
Log:
* Do not fiddle around with the close field if we might have returned the
connection to the pool already. It might be already in use again by another
thread.
Modified:
httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_http.c?rev=1052224&r1=1052223&r2=1052224&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_http.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_http.c Thu Dec 23 11:10:56 2010
@@ -1946,7 +1946,9 @@ apr_status_t ap_proxy_http_process_respo
if (ap_pass_brigade(r->output_filters, pass_bb) != APR_SUCCESS
|| c->aborted) {
/* Ack! Phbtt! Die! User aborted! */
- backend->close = 1; /* this causes socket close below */
+ if (!backend->cleaned) {
+ backend->close = 1; /* this causes socket close below */
+ }
finish = TRUE;
}
@@ -1974,11 +1976,7 @@ apr_status_t ap_proxy_http_process_respo
/* Pass EOS bucket down the filter chain. */
e = apr_bucket_eos_create(c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, e);
- if (ap_pass_brigade(r->output_filters, bb) != APR_SUCCESS
- || c->aborted) {
- /* Ack! Phbtt! Die! User aborted! */
- backend->close = 1; /* this causes socket close below */
- }
+ ap_pass_brigade(r->output_filters, bb);
apr_brigade_cleanup(bb);
}
@@ -2162,7 +2160,7 @@ static int proxy_http_handler(request_re
/* Step Six: Clean Up */
cleanup:
if (backend) {
- if (status != OK)
+ if ((status != OK) && (!backend->cleaned))
backend->close = 1;
ap_proxy_http_cleanup(proxy_function, r, backend);
}