diff options
author | Daniel Stenberg <daniel@haxx.se> | 2007-10-23 21:00:51 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2007-10-23 21:00:51 +0000 |
commit | 949ff9715a55886ab13fd6cb59d4b4043d457793 (patch) | |
tree | e40ea1d624d1ec57101c7f75d8918cb288f73ab6 | |
parent | b9a305983fad324a722f8865a4f4d22535ab6c84 (diff) |
Bug report #1812190 (http://curl.haxx.se/bug/view.cgi?id=1812190) points out
that libcurl tried to re-use connections a bit too much when using non-SSL
protocols tunneled over a HTTP proxy.
-rw-r--r-- | CHANGES | 5 | ||||
-rw-r--r-- | RELEASE-NOTES | 2 | ||||
-rw-r--r-- | TODO-RELEASE | 5 | ||||
-rw-r--r-- | lib/url.c | 18 |
4 files changed, 19 insertions, 11 deletions
@@ -6,6 +6,11 @@ Changelog +Daniel S (23 October 2007) +- Bug report #1812190 (http://curl.haxx.se/bug/view.cgi?id=1812190) points out + that libcurl tried to re-use connections a bit too much when using non-SSL + protocols tunneled over a HTTP proxy. + Daniel S (22 October 2007) - Michal Marek forwarded the bug report https://bugzilla.novell.com/show_bug.cgi?id=332917 about a HTTP redirect to diff --git a/RELEASE-NOTES b/RELEASE-NOTES index cbc24b8ba..65d23608a 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -41,6 +41,8 @@ This release includes the following bugfixes: o specifying a proxy with a trailing slash didn't work (unless it also contained a port number) o redirect from HTTP to FTP memory problem + o re-used connections a bit too much when using non-SSL protocols tunneled + over a HTTP proxy This release includes the following known bugs: diff --git a/TODO-RELEASE b/TODO-RELEASE index 10ca2ed74..563d0372a 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -1,7 +1,4 @@ -To be addressed before 7.17.1 (planned release: November 2007) +To be addressed before 7.17.1 (planned release: late October 2007) ============================= -104 - [ curl-Bugs-1812190 ] libcurl can use wrong connection, when using - https - 106 - @@ -2399,14 +2399,18 @@ ConnectionExists(struct SessionHandle *data, /* don't do mixed SSL and non-SSL connections */ continue; - if(!needle->bits.httpproxy || needle->protocol&PROT_SSL) { - /* The requested connection does not use a HTTP proxy or it - uses SSL. */ + if(needle->bits.proxy != check->bits.proxy) + /* don't do mixed proxy and non-proxy connections */ + continue; - if(!(needle->protocol&PROT_SSL) && check->bits.httpproxy) - /* we don't do SSL but the cached connection has a proxy, - then don't match this */ - continue; + if(!needle->bits.httpproxy || needle->protocol&PROT_SSL || + (needle->bits.httpproxy && check->bits.httpproxy && + needle->bits.tunnel_proxy && check->bits.tunnel_proxy && + strequal(needle->proxy.name, check->proxy.name) && + (needle->port == check->port))) { + /* The requested connection does not use a HTTP proxy or it uses SSL or + it is a non-SSL protocol tunneled over the same http proxy name and + port number */ if(strequal(needle->protostr, check->protostr) && strequal(needle->host.name, check->host.name) && |