- Jad Chamcham pointed out a bug with connection re-use. If a connection had
authorDaniel Stenberg <daniel@haxx.se>
Fri, 20 Nov 2009 13:27:21 +0000 (13:27 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 20 Nov 2009 13:27:21 +0000 (13:27 +0000)
  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
RELEASE-NOTES
lib/url.c

diff --git a/CHANGES b/CHANGES
index 0fc7bd3..c8333b0 100644 (file)
--- 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:
index aa5be1d..cae130c 100644 (file)
@@ -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)
index 6cd1f60..54d2ff9 100644 (file)
--- 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! */