From: Eric Covener Date: Sun, 28 Sep 2008 15:36:44 +0000 (+0000) Subject: Merge r697362 from trunk: X-Git-Tag: 2.2.10~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0dfb73904bbee2fe082cbd81b1c279a51dfa8b0b;p=thirdparty%2Fapache%2Fhttpd.git Merge r697362 from trunk: For timeouts, behave as before and not drop. Submitted by: Adam Woodworth Reviewed by: jim, rpluem, covener git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@699841 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 6674d05b5c6..f5a43bc4a99 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,10 @@ Changes with Apache 2.2.10 mod_proxy_ftp: Prevent XSS attacks when using wildcards in the path of the FTP URL. Discovered by Marc Bevand of Rapid7. [Ruediger Pluem] + *) mod_proxy_http: Don't trigger a retry by the client if a failure to + read the response line was the result of a timeout. + [Adam Woodworth ] + *) Support chroot on Unix-family platforms PR 43596 [Dimitar Pashev ] diff --git a/STATUS b/STATUS index c2a0c21a21f..6d3d9eca4b1 100644 --- a/STATUS +++ b/STATUS @@ -85,15 +85,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_proxy_http: Do not close the connection to the client if the reading - of a response from the backend failed due to a timeout. - [Adam Woodworth ] - Trunk version of patch: - http://svn.apache.org/viewvc?rev=697362&view=rev - Backport version for 2.2.x of patch: - Trunk version of patch works - +1: rpluem, jim, covener - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/proxy/mod_proxy_http.c b/modules/proxy/mod_proxy_http.c index 791c1dba499..9175baec65f 100644 --- a/modules/proxy/mod_proxy_http.c +++ b/modules/proxy/mod_proxy_http.c @@ -1375,6 +1375,10 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r, ap_log_rerror(APLOG_MARK, APLOG_ERR, rc, r, "proxy: error reading status line from remote " "server %s", backend->hostname); + if (rc == APR_TIMEUP) { + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, + "proxy: read timeout"); + } /* * If we are a reverse proxy request shutdown the connection * WITHOUT ANY response to trigger a retry by the client @@ -1382,9 +1386,12 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r, * BUT currently we should not do this if the request is the * first request on a keepalive connection as browsers like * seamonkey only display an empty page in this case and do - * not do a retry. + * not do a retry. We should also not do this on a + * connection which times out; instead handle as + * we normally would handle timeouts */ - if (r->proxyreq == PROXYREQ_REVERSE && c->keepalives) { + if (r->proxyreq == PROXYREQ_REVERSE && c->keepalives && + rc != APR_TIMEUP) { apr_bucket *eos; ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,