From 1056dc9a26db39bdb31f5f0b49080b13df3cb528 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 22 Oct 2007 09:25:45 +0000 Subject: [PATCH] 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). --- CHANGES | 5 +++++ RELEASE-NOTES | 2 ++ lib/url.c | 18 +++++++++++++----- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index 07841de..87d36ae 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 50a4db1..4e57d8e 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 8685c61..212e184 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]=""; -- 2.7.4