diff --git a/CHANGES b/CHANGES index 07841de2a..87d36ae4f 100644 --- 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. diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 50a4db1db..4e57d8ec7 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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: diff --git a/lib/url.c b/lib/url.c index 8685c61a2..212e184f7 100644 --- 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]="";