Commit ceebcebc authored by Daniel Earl Poirier's avatar Daniel Earl Poirier
Browse files

Backport r1031551

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
parent 3c62d0ac
Loading
Loading
Loading
Loading
+3 −2
Changes for CHANGES: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
                                                         -*- 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

+0 −6
Changes for STATUS: 0 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -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 ]

+3 −0
Changes for modules/proxy/mod_proxy_connect.c: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -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;