From: Daniel Stenberg <daniel@haxx.se>
Date: Fri, 9 Mar 2001 16:48:18 +0000 (+0000)
Subject: remake Host: for each connection and it'll work with proxies too
X-Git-Tag: curl-7_7-beta2~46
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ac0bad2433a35c274cf8ad14e158251b88817b33;p=curl

remake Host: for each connection and it'll work with proxies too
---

diff --git a/lib/http.c b/lib/http.c
index 2da7cbf72..52b009d3e 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -469,10 +469,14 @@ CURLcode Curl_http(struct connectdata *conn)
     http->sendit = Curl_getFormData(data->httppost, &http->postsize);
   }
 
-  if(!checkheaders(data, "Host:") &&
-     !conn->allocptr.host) {
-    /* if ptr_host is already set, it is OK since we only re-use connections
-       to the very same host and port */
+  if(!checkheaders(data, "Host:")) {
+    /* if ptr_host is already set, it is almost OK since we only re-use
+       connections to the very same host and port, but when we use a HTTP
+       proxy we have a persistant connect and yet we must change the Host:
+       header! */
+
+    if(conn->allocptr.host)
+      free(conn->allocptr.host);
 
     if(((conn->protocol&PROT_HTTPS) && (conn->remote_port == PORT_HTTPS)) ||
        (!(conn->protocol&PROT_HTTPS) && (conn->remote_port == PORT_HTTP)) )