diff options
-rw-r--r-- | lib/http.c | 12 |
1 files changed, 8 insertions, 4 deletions
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)) ) |