]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
PR50220: keep on chugging after EINTR in mod_proxy_connect
authorEric Covener <covener@apache.org>
Fri, 5 Nov 2010 13:12:14 +0000 (13:12 +0000)
committerEric Covener <covener@apache.org>
Fri, 5 Nov 2010 13:12:14 +0000 (13:12 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1031551 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/proxy/mod_proxy_connect.c

diff --git a/CHANGES b/CHANGES
index fe703fb6b8b0958db353105a5af278325651a5e5..5abb977bdbdcb73eccbc85f20de38a9025b16923 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -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]
index e90cb5c62fe2cf6d8940d01815711ab8d4f400fe..51191728803b28c3b5c0fa3dfd0f272c819ea507 100644 (file)
@@ -438,6 +438,9 @@ static int proxy_connect_handler(request_rec *r, proxy_worker *worker,
     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;