aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2007-02-27 22:12:15 +0000
committerDaniel Stenberg <daniel@haxx.se>2007-02-27 22:12:15 +0000
commit060f7ca2d2a7f5c8845a62a143c1d9fa988d1269 (patch)
treeece6bd391dfb56c808fae61e599e508baa83fd7a
parent638c715a5122697a34685615f24855b8417562f1 (diff)
- Hang Kin Lau found and fixed: When I use libcurl to connect to an https
server through a proxy and have the remote https server port set using the CURLOPT_PORT option, protocol gets reset to http from https after the first request. User defined URL was modified internally by libcurl and subsequent reuse of the easy handle may lead to connection using a different protocol (if not originally http). I found that libcurl hardcoded the protocol to "http" when it tries to regenerate the URL if CURLOPT_PORT is set. I tried to fix the problem as follows and it's working fine so far
-rw-r--r--CHANGES14
-rw-r--r--RELEASE-NOTES3
-rw-r--r--lib/url.c4
3 files changed, 18 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index 2867cb7b7..9fb1522e9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,20 @@
Changelog
+Daniel (27 February 2007)
+- Hang Kin Lau found and fixed: When I use libcurl to connect to an https
+ server through a proxy and have the remote https server port set using the
+ CURLOPT_PORT option, protocol gets reset to http from https after the first
+ request.
+
+ User defined URL was modified internally by libcurl and subsequent reuse of
+ the easy handle may lead to connection using a different protocol (if not
+ originally http).
+
+ I found that libcurl hardcoded the protocol to "http" when it tries to
+ regenerate the URL if CURLOPT_PORT is set. I tried to fix the problem as
+ follows and it's working fine so far
+
Daniel (25 February 2007)
- Adam D. Moss made the HTTP CONNECT procedure less blocking when used from
the multi interface. Note that it still does a part of the connection in a
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 8a9e2f02c..97ca13ea4 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -36,6 +36,7 @@ This release includes the following bugfixes:
o HTTP CONNECT thru a proxy is now less blocking when the multi interface is
used
o HTTP Digest header parsing fix for unquoted last word ending with CRLF
+ o CURLOPT_PORT, HTTP proxy, re-using connections and non-HTTP protocols
This release includes the following known bugs:
@@ -56,6 +57,6 @@ advice from friends like these:
Yang Tse, Manfred Schwarb, Michael Wallner, Jeff Pohlmeyer, Shmulik Regev,
Rob Crittenden, Robert A. Monat, Dan Fandrich, Duncan Mac-Vicar Prett,
Michal Marek, Robson Braga Araujo, Ian Turner, Linus Nielsen Feltzing,
- Ravi Pratap, Adam D. Moss, Jose Kahan
+ Ravi Pratap, Adam D. Moss, Jose Kahan, Hang Kin Lau
Thanks! (and sorry if I forgot to mention someone)
diff --git a/lib/url.c b/lib/url.c
index 64a145cdb..87a07736e 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -3590,8 +3590,8 @@ else {
/* we need to create new URL with the new port number */
char *url;
- url = aprintf("http://%s:%d%s", conn->host.name, conn->remote_port,
- data->reqdata.path);
+ url = aprintf("%s://%s:%d%s", conn->protostr, conn->host.name,
+ conn->remote_port, data->reqdata.path);
if(!url)
return CURLE_OUT_OF_MEMORY;