diff --git a/lib/http.c b/lib/http.c index 2da7cbf72ebf8c1da66fcde8d071b97fb12f126e..52b009d3edba17b8e507fa5899e6288bd6749f18 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)) )