]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Backport r1031551
authorDaniel Earl Poirier <poirier@apache.org>
Wed, 8 Dec 2010 19:31:34 +0000 (19:31 +0000)
committerDaniel Earl Poirier <poirier@apache.org>
Wed, 8 Dec 2010 19:31:34 +0000 (19:31 +0000)
proxy_connect: Don't give up in the middle of a CONNECT tunnel
when the child process is starting to exit.  PR50220. [Eric Covener]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@1043628 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
modules/proxy/mod_proxy_connect.c

diff --git a/CHANGES b/CHANGES
index 6cc4db6a88ea8bc2d7421afbd4435ea3ea2eabf7..a0cc2d68a2a2db3239eed962c485a9331a90cbe2 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,7 +1,8 @@
-                                                         -*- coding: utf-8 -*-
+                                                         -*- coding: utf-8 -*-
 Changes with Apache 2.2.18
 
-
+  *) proxy_connect: Don't give up in the middle of a CONNECT tunnel
+     when the child process is starting to exit.  PR50220. [Eric Covener]
 
 Changes with Apache 2.2.17
 
diff --git a/STATUS b/STATUS
index 9d3ade93eb080440265d30ec535378592c6e15f1..b4f5ccf36ca145cd491a4fe91ab167ab3d901aa3 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -97,12 +97,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
      2.2.x patch: trunk patch works
      +1: minfrin, jim, covener
 
-   * mod_proxy_connect: don't break proxy connections when EINTR is received 
-     during poll PR50220.
-     Trunk patch: http://svn.apache.org/viewvc?rev=1031551&view=rev
-     2.2.x patch: http://people.apache.org/~covener/patches/2.2.x-proxy_connect_eintr.diff
-     +1 covener, trawick, poirier
-
 PATCHES PROPOSED TO BACKPORT FROM TRUNK:
   [ New proposals should be added at the end of the list ]
 
index d66a50d8193250cd0ad2958ec105a408d58688e7..6de44d15525b5e95bbefeca16c3a0b40463dbd10 100644 (file)
@@ -288,6 +288,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;