aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2012-01-31 22:52:10 +0100
committerDaniel Stenberg <daniel@haxx.se>2012-01-31 22:52:10 +0100
commit466150bc64de0caef08f22cc8a88f7922483a639 (patch)
tree70fa8bb1a6a7dd72f95366d65dcfd9ef94ab02ee
parentf710aa40b326377b6834b59cc937bf50e929aba7 (diff)
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
-rw-r--r--lib/http_proxy.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/http_proxy.c b/lib/http_proxy.c
index b20034781..1c2aa59c8 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;