proxy: fix hostname resolution and IDN conversion

Properly resolve, convert and log the proxy host names.
Support the "--connect-to" feature for SOCKS proxies and for passive FTP
data transfers.

Follow-up to cb4e2be

Reported-by: Jay Satiro
Fixes https://github.com/curl/curl/issues/1248
This commit is contained in:
Michael Kaufmann 2017-02-18 13:56:56 +01:00
parent 13e3a18b34
commit 2f8d0df085
10 changed files with 295 additions and 29 deletions

View file

@ -98,16 +98,21 @@ CURLcode Curl_proxy_connect(struct connectdata *conn, int sockindex)
* original pointer
*
* This function might be called several times in the multi interface case
* if the proxy's CONNTECT response is not instant.
* if the proxy's CONNECT response is not instant.
*/
prot_save = conn->data->req.protop;
memset(&http_proxy, 0, sizeof(http_proxy));
conn->data->req.protop = &http_proxy;
connkeep(conn, "HTTP proxy CONNECT");
if(sockindex == SECONDARYSOCKET)
hostname = conn->secondaryhostname;
else if(conn->bits.conn_to_host)
/* for the secondary socket (FTP), use the "connect to host"
* but ignore the "connect to port" (use the secondary port)
*/
if(conn->bits.conn_to_host)
hostname = conn->conn_to_host.name;
else if(sockindex == SECONDARYSOCKET)
hostname = conn->secondaryhostname;
else
hostname = conn->host.name;