From: Ruediger Pluem Date: Sun, 2 Apr 2006 19:25:34 +0000 (+0000) Subject: Merge r379237 from trunk: X-Git-Tag: 2.2.2~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c39b93274c2a4f3bb1588afd1ea0663eeab5dcab;p=thirdparty%2Fapache%2Fhttpd.git Merge r379237 from trunk: * Disable persistent connections for SSL backends again as we do not handle them correctly, because we recreate backend->connection for each request and thus try to initialize an already existing SSL connection. Noticed by: jorton Submitted by: rpluem Reviewed by: rpluem, trawick, jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@390885 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/STATUS b/STATUS index 0ea1717c0aa..16108f02f24 100644 --- a/STATUS +++ b/STATUS @@ -74,16 +74,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_proxy_http: Disable persistent connections for SSL backends as we do - not handle them correctly, because we recreate backend->connection for - each request and thus try to initialize an already existing SSL - connection. - Trunk version of patch: - http://svn.apache.org/viewcvs?rev=379237&view=rev - Backport version for 2.2.x of patch: - Trunk version of patch works - +1 rpluem, trawick, jim - PATCHES PROPOSED TO BACKPORT FROM TRUNK: diff --git a/modules/proxy/mod_proxy_http.c b/modules/proxy/mod_proxy_http.c index 4d59be05ed5..9d439a61ee9 100644 --- a/modules/proxy/mod_proxy_http.c +++ b/modules/proxy/mod_proxy_http.c @@ -987,7 +987,7 @@ skip_body: * otherwise sent Connection: Keep-Alive. */ if (!force10) { - if (p_conn->close) { + if (p_conn->close || p_conn->close_on_recycle) { buf = apr_pstrdup(p, "Connection: close" CRLF); } else { @@ -1672,6 +1672,14 @@ static int proxy_http_handler(request_rec *r, proxy_worker *worker, backend->is_ssl = is_ssl; + /* + * TODO: Currently we cannot handle persistent SSL backend connections, + * because we recreate backend->connection for each request and thus + * try to initialize an already existing SSL connection. This does + * not work. + */ + if (is_ssl) + backend->close_on_recycle = 1; /* Step One: Determine Who To Connect To */ if ((status = ap_proxy_determine_connection(p, r, conf, worker, backend,