From: Eric Covener Date: Fri, 5 Nov 2010 13:12:14 +0000 (+0000) Subject: PR50220: keep on chugging after EINTR in mod_proxy_connect X-Git-Tag: 2.3.9~127 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b76f1b5dbf6873b0dcb4e4ee8c6f2939a0dbd501;p=thirdparty%2Fapache%2Fhttpd.git PR50220: keep on chugging after EINTR in mod_proxy_connect git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1031551 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index fe703fb6b8b..5abb977bdbd 100644 --- 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] diff --git a/modules/proxy/mod_proxy_connect.c b/modules/proxy/mod_proxy_connect.c index e90cb5c62fe..51191728803 100644 --- a/modules/proxy/mod_proxy_connect.c +++ b/modules/proxy/mod_proxy_connect.c @@ -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;