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);
     }