]> granicus.if.org Git - curl/commitdiff
multi_runsingle: avoid loop in CURLM_STATE_WAITPROXYCONNECT
authorMaksim Kuzevanov <m.kuzevanov@corp.mail.ru>
Mon, 7 Mar 2016 16:37:49 +0000 (19:37 +0300)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 13 Mar 2016 11:41:17 +0000 (12:41 +0100)
Closes #703

lib/multi.c

index 6a1f7c82bc0b47e5e6f47a24f491f0bbbe0d6d01..4411a18146df18e783ed36c387878a0616d9a003 100644 (file)
@@ -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