From: Maksim Kuzevanov Date: Mon, 7 Mar 2016 16:37:49 +0000 (+0300) Subject: multi_runsingle: avoid loop in CURLM_STATE_WAITPROXYCONNECT X-Git-Tag: curl-7_48_0~53 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d7e3942814e0c3a24069a0888da4b2431bafe44a;p=curl multi_runsingle: avoid loop in CURLM_STATE_WAITPROXYCONNECT Closes #703 --- diff --git a/lib/multi.c b/lib/multi.c index 6a1f7c82b..4411a1814 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -1230,17 +1230,19 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, /* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */ result = Curl_http_connect(data->easy_conn, &protocol_connect); - rc = CURLM_CALL_MULTI_PERFORM; if(data->easy_conn->bits.proxy_connect_closed) { + rc = CURLM_CALL_MULTI_PERFORM; /* connect back to proxy again */ result = CURLE_OK; Curl_done(&data->easy_conn, CURLE_OK, FALSE); multistate(data, CURLM_STATE_CONNECT); } else if(!result) { - if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_COMPLETE) + if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_COMPLETE) { + rc = CURLM_CALL_MULTI_PERFORM; /* initiate protocol connect phase */ multistate(data, CURLM_STATE_SENDPROTOCONNECT); + } } break; #endif