From a41493b3b0eaa83a907b4c3dbbab1297791ead97 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 20 Nov 2009 13:27:21 +0000 Subject: [PATCH] - Jad Chamcham pointed out a bug with connection re-use. If a connection had CURLOPT_HTTPPROXYTUNNEL enabled over a proxy, a subsequent request using the same proxy with the tunnel option disabled would still wrongly re-use that previous connection and the outcome would only be badness. --- CHANGES | 6 ++++++ RELEASE-NOTES | 3 ++- lib/url.c | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 0fc7bd3..c8333b0 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,12 @@ Changelog +Daniel Stenberg (20 Nov 2009) +- Jad Chamcham pointed out a bug with connection re-use. If a connection had + CURLOPT_HTTPPROXYTUNNEL enabled over a proxy, a subsequent request using the + same proxy with the tunnel option disabled would still wrongly re-use that + previous connection and the outcome would only be badness. + Daniel Stenberg (17 Nov 2009) - Constantine Sapuntzakis provided another fix for the DNS cache that could end up with entries that wouldn't time-out: diff --git a/RELEASE-NOTES b/RELEASE-NOTES index aa5be1d..cae130c 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -23,6 +23,7 @@ This release includes the following bugfixes: o configure --with-nss is set but not "yes" o don't store LDFLAGS in pkg-config file o never-pruned DNS cached entries + o HTTP proxy tunnel re-used connection even if tunnel got disabled This release includes the following known bugs: @@ -33,6 +34,6 @@ advice from friends like these: Yang Tse, Kamil Dudka, Christian Schmitz, Constantine Sapuntzakis, Marco Maggi, Camille Moncelier, Claes Jakobsson, Kevin Baughman, - Marc Kleine-Budde + Marc Kleine-Budde, Jad Chamcham Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/url.c b/lib/url.c index 6cd1f60..54d2ff9 100644 --- a/lib/url.c +++ b/lib/url.c @@ -2758,6 +2758,7 @@ ConnectionExists(struct SessionHandle *data, is the checked one using the same host, port and type? */ if(check->bits.proxy && (needle->proxytype == check->proxytype) && + (needle->bits.tunnel_proxy == check->bits.tunnel_proxy) && Curl_raw_equal(needle->proxy.name, check->proxy.name) && needle->port == check->port) { /* This is the same proxy connection, use it! */ -- 2.7.4