diff --git a/lib/http.c b/lib/http.c index 6bba43dda..35cae48e8 100644 --- a/lib/http.c +++ b/lib/http.c @@ -420,7 +420,7 @@ CURLcode Curl_http_connect(struct connectdata *conn) * has occured, can we start talking SSL */ - if(data->change.proxy && (data->set.proxytype == CURLPROXY_HTTP) && + if(conn->bits.httpproxy && ((conn->protocol & PROT_HTTPS) || data->set.tunnel_thru_httpproxy)) { /* either HTTPS over proxy, OR explicitly asked for a tunnel */ @@ -551,7 +551,7 @@ CURLcode Curl_http(struct connectdata *conn) host, ppath, (conn->protocol&PROT_HTTPS?TRUE:FALSE)); } - if (data->change.proxy && + if (data->change.proxy && *data->change.proxy && !data->set.tunnel_thru_httpproxy && !(conn->protocol&PROT_HTTPS)) { /* The path sent to the proxy is in fact the entire URL */ diff --git a/lib/url.c b/lib/url.c index 744a0c4fb..c55ebdb19 100644 --- a/lib/url.c +++ b/lib/url.c @@ -1729,9 +1729,11 @@ static CURLcode CreateConnection(struct SessionHandle *data, conn->firstsocket = -1; /* no file descriptor */ conn->secondarysocket = -1; /* no file descriptor */ conn->connectindex = -1; /* no index */ - conn->bits.httpproxy = data->change.proxy?TRUE:FALSE; /* proxy-or-not */ + conn->bits.httpproxy = (data->change.proxy && *data->change.proxy && + (data->set.proxytype == CURLPROXY_HTTP))? + TRUE:FALSE; /* http proxy or not */ conn->bits.use_range = data->set.set_range?TRUE:FALSE; /* range status */ - conn->range = data->set.set_range; /* clone the range setting */ + conn->range = data->set.set_range; /* clone the range setting */ conn->resume_from = data->set.set_resume_from; /* inherite resume_from */ /* Default protocol-independent behavior doesn't support persistant