From 9fd7500f5ea3106b90675530b41880430cd8449e Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Tue, 22 Mar 2011 06:04:26 -0600 Subject: [PATCH] Bug 2976: invalid URL on intercepted requests during reconfigure Listening ports abuse the cbdata type as a pseudo refcount. This breaks during reconfigure when the config is erased and the active requests handles all become invalid pointers. Interception only works on HTTP protocol. We can hard-code the scheme and avoid this problem until a complete fix is written. --- src/client_side.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/client_side.cc b/src/client_side.cc index 49e4a36899..9d42444744 100644 --- a/src/client_side.cc +++ b/src/client_side.cc @@ -1875,21 +1875,21 @@ prepareTransparentURL(ConnStateData * conn, ClientHttpRequest *http, char *url, return; /* already in good shape */ /* BUG: Squid cannot deal with '*' URLs (RFC2616 5.1.2) */ + // BUG 2976: Squid only accepts intercepted HTTP. if ((host = mime_get_header(req_hdr, "Host")) != NULL) { int url_sz = strlen(url) + 32 + Config.appendDomainLen + strlen(host); http->uri = (char *)xcalloc(url_sz, 1); - snprintf(http->uri, url_sz, "%s://%s%s", - conn->port->protocol, host, url); + snprintf(http->uri, url_sz, "http://%s%s", /*conn->port->protocol,*/ host, url); debugs(33, 5, "TRANSPARENT HOST REWRITE: '" << http->uri <<"'"); } else { /* Put the local socket IP address as the hostname. */ int url_sz = strlen(url) + 32 + Config.appendDomainLen; http->uri = (char *)xcalloc(url_sz, 1); http->getConn()->me.ToHostname(ipbuf,MAX_IPSTRLEN), - snprintf(http->uri, url_sz, "%s://%s:%d%s", - http->getConn()->port->protocol, + snprintf(http->uri, url_sz, "http://%s:%d%s", + // http->getConn()->port->protocol, ipbuf, http->getConn()->me.GetPort(), url); debugs(33, 5, "TRANSPARENT REWRITE: '" << http->uri << "'"); } -- 2.47.3