From e650dbde86d47fc9ded3a8328b8d765fce54078b Mon Sep 17 00:00:00 2001 From: Andrei Cipu Date: Sat, 10 Mar 2012 16:48:59 +0100 Subject: Curl_http: strip off [brackets] from ipv6-only host headers Since the host name is passed in to the cookie engine it will not work correctly if the brackets are left in the name. Bug:http://curl.haxx.se/mail/lib-2012-03/0036.html --- lib/http.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/http.c b/lib/http.c index 374de7d21..c7a6df015 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1840,9 +1840,19 @@ CURLcode Curl_http(struct connectdata *conn, bool *done) /* ignore empty data */ free(cookiehost); else { - char *colon = strchr(cookiehost, ':'); - if(colon) - *colon = 0; /* The host must not include an embedded port number */ + /* If the host begins with '[', we start searching for the port after + the bracket has been closed */ + int startsearch = 0; + if(*cookiehost == '[') { + char *closingbracket = strchr(++cookiehost, ']'); + if(closingbracket) + *closingbracket = 0; + } + else { + char *colon = strchr(cookiehost + startsearch, ':'); + if(colon) + *colon = 0; /* The host must not include an embedded port number */ + } Curl_safefree(conn->allocptr.cookiehost); conn->allocptr.cookiehost = cookiehost; } -- cgit v1.2.3