From: Amos Jeffries Date: Sat, 5 Mar 2011 02:00:32 +0000 (-0700) Subject: Bug 2976: invalid URL on intercepted requests during reconfigure X-Git-Tag: take06~27^2~113 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c057c49e353f1878cacc10a46dd9306f7d8c7cf8;p=thirdparty%2Fsquid.git 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. --- diff --git a/src/client_side.cc b/src/client_side.cc index 30efedc5ad..5f2538957d 100644 --- a/src/client_side.cc +++ b/src/client_side.cc @@ -2016,21 +2016,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 << "'"); }