Bug report #1815530 (http://curl.haxx.se/bug/view.cgi?id=1815530) points out
authorDaniel Stenberg <daniel@haxx.se>
Mon, 22 Oct 2007 09:25:45 +0000 (09:25 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 22 Oct 2007 09:25:45 +0000 (09:25 +0000)
that specifying a proxy with a trailing slash didn't work (unless it also
contained a port number).

CHANGES
RELEASE-NOTES
lib/url.c

diff --git a/CHANGES b/CHANGES
index 07841de..87d36ae 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,11 @@
 
                                   Changelog
 
+Daniel S (22 October 2007)
+- Bug report #1815530 (http://curl.haxx.se/bug/view.cgi?id=1815530) points out
+  that specifying a proxy with a trailing slash didn't work (unless it also
+  contained a port number).
+
 Patrick M (15 October 2007)
 - Fixed the dynamic CURLOPT_POSTFIELDS problem: this option is now static again
   and option CURLOPT_COPYPOSTFIELDS has been added to support dynamic mode.
index 50a4db1..4e57d8e 100644 (file)
@@ -36,6 +36,8 @@ This release includes the following bugfixes:
  o handles chunked-encoded CONNECT responses
  o misuse of ares_timeout() result
  o --local-port on TFTP transfers
+ o specifying a proxy with a trailing slash didn't work (unless it also
+   contained a port number)
 
 This release includes the following known bugs:
 
index 8685c61..212e184 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -3339,10 +3339,17 @@ static CURLcode parse_proxy(struct SessionHandle *data,
     /* now set the local port number */
     conn->port = atoi(prox_portno);
   }
-  else if(data->set.proxyport) {
-    /* None given in the proxy string, then get the default one if it is
-       given */
-    conn->port = data->set.proxyport;
+  else {
+    /* without a port number after the host name, some people seem to use
+       a slash so we strip everything from the first slash */
+    atsign = strchr(proxyptr, '/');
+    if(atsign)
+      *atsign = 0x0; /* cut off path part from host name */
+
+    if(data->set.proxyport)
+      /* None given in the proxy string, then get the default one if it is
+         given */
+      conn->port = data->set.proxyport;
   }
 
   /* now, clone the cleaned proxy host name */
@@ -3357,7 +3364,8 @@ static CURLcode parse_proxy(struct SessionHandle *data,
 }
 
 /* Extract the user and password from the authentication string */
-static CURLcode parse_proxy_auth(struct SessionHandle *data, struct connectdata *conn)
+static CURLcode parse_proxy_auth(struct SessionHandle *data,
+                                 struct connectdata *conn)
 {
   char proxyuser[MAX_CURL_USER_LENGTH]="";
   char proxypasswd[MAX_CURL_PASSWORD_LENGTH]="";