any concern that these CONNECT tunnels, that look like one request to
the proxy, would hold open exiting children too long?

---------- Forwarded message ----------
From:  <cove...@apache.org>
Date: Fri, Nov 5, 2010 at 9:12 AM
Subject: svn commit: r1031551 - in /httpd/httpd/trunk: CHANGES
modules/proxy/mod_proxy_connect.c
To: c...@httpd.apache.org


Author: covener
Date: Fri Nov  5 13:12:14 2010
New Revision: 1031551

URL: http://svn.apache.org/viewvc?rev=1031551&view=rev
Log:
PR50220: keep on chugging after EINTR in mod_proxy_connect


Modified:
   httpd/httpd/trunk/CHANGES
   httpd/httpd/trunk/modules/proxy/mod_proxy_connect.c

Modified: httpd/httpd/trunk/CHANGES
URL: 
http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1031551&r1=1031550&r2=1031551&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Fri Nov  5 13:12:14 2010
@@ -6,6 +6,9 @@ Changes with Apache 2.3.9
     Fix a denial of service attack against mod_reqtimeout.
     [Stefan Fritsch]

+  *) proxy_connect: Don't give up in the middle of a CONNECT tunnel
+     when the child process is starting to exit.  PR50220. [Eric Covener]
+
  *) mod_autoindex: Fix inheritance of mod_autoindex directives into
     contexts that don't have any mod_autoindex directives. PR47766.
     [Eric Covener]

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_connect.c
URL: 
http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_connect.c?rev=1031551&r1=1031550&r2=1031551&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_connect.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_connect.c Fri Nov  5 13:12:14 2010
@@ -438,6 +438,9 @@ static int proxy_connect_handler(request
    while (1) { /* Infinite loop until error (one side closes the connection) */
        if ((rv = apr_pollset_poll(pollset, -1, &pollcnt, &signalled))
            != APR_SUCCESS) {
+            if (APR_STATUS_IS_EINTR(rv)) {
+                continue;
+            }
            apr_socket_close(sock);
            ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, "proxy:
CONNECT: error apr_poll()");
            return HTTP_INTERNAL_SERVER_ERROR;

-- 
Eric Covener
cove...@gmail.com

Reply via email to