From 3d209b5fb0c792655288758d48a2703b88a84145 Mon Sep 17 00:00:00 2001 From: Mohammad AlSaleh Date: Sat, 9 Jan 2016 00:50:38 +0200 Subject: lib: Prefix URLs with lower-case protocol names/schemes Before this patch, if a URL does not start with the protocol name/scheme, effective URLs would be prefixed with upper-case protocol names/schemes. This behavior might not be expected by library users or end users. For example, if `CURLOPT_DEFAULT_PROTOCOL` is set to "https". And the URL is "hostname/path". The effective URL would be "HTTPS://hostname/path" instead of "https://hostname/path". After this patch, effective URLs would be prefixed with a lower-case protocol name/scheme. Closes #597 Signed-off-by: Mohammad AlSaleh --- lib/url.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib') diff --git a/lib/url.c b/lib/url.c index eaa282a04..2fd0a1283 100644 --- a/lib/url.c +++ b/lib/url.c @@ -5511,6 +5511,7 @@ static CURLcode create_conn(struct SessionHandle *data, we're gonna follow a Location: later or... then we need the protocol part added so that we have a valid URL. */ char *reurl; + char *ch_lower; reurl = aprintf("%s://%s", conn->handler->scheme, data->change.url); @@ -5519,6 +5520,10 @@ static CURLcode create_conn(struct SessionHandle *data, goto out; } + /* Change protocol prefix to lower-case */ + for(ch_lower = reurl; *ch_lower != ':'; ch_lower++) + *ch_lower = (char)TOLOWER(*ch_lower); + if(data->change.url_alloc) { Curl_safefree(data->change.url); data->change.url_alloc = FALSE; -- cgit v1.2.3