From: Daniel Stenberg Date: Tue, 31 Jan 2012 21:52:10 +0000 (+0100) Subject: CONNECT: send correct Host: with IPv6 numerical address X-Git-Tag: curl-7_25_0~76 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=466150bc64d;p=thirdparty%2Fcurl.git CONNECT: send correct Host: with IPv6 numerical address When the target host was given as a IPv6 numerical address, it was not properly put within square brackets for the Host: header in the CONNECT request. The "normal" request did fine. Reported by: "zooloo" Bug: http://curl.haxx.se/bug/view.cgi?id=3482093 --- diff --git a/lib/http_proxy.c b/lib/http_proxy.c index b200347814..1c2aa59c81 100644 --- a/lib/http_proxy.c +++ b/lib/http_proxy.c @@ -116,6 +116,8 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn, /* Setup the proxy-authorization header, if any */ result = Curl_http_output_auth(conn, "CONNECT", host_port, TRUE); + free(host_port); + if(CURLE_OK == result) { char *host=(char *)""; const char *proxyconn=""; @@ -124,10 +126,11 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn, "1.0" : "1.1"; if(!Curl_checkheaders(data, "Host:")) { - host = aprintf("Host: %s\r\n", host_port); + host = aprintf("Host: %s%s%s:%hu\r\n", conn->bits.ipv6_ip?"[":"", + hostname, conn->bits.ipv6_ip?"]":"", + remote_port); if(!host) { free(req_buffer); - free(host_port); return CURLE_OUT_OF_MEMORY; } } @@ -174,7 +177,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn, if(result) failf(data, "Failed sending CONNECT to proxy"); } - free(host_port); + Curl_safefree(req_buffer); if(result) return result;