Loading CHANGES +5 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,11 @@ Changelog Daniel S (27 Jan 2008) - Dmitry Kurochkin: In "real world" testing I found more bugs in pipelining. Broken connection is not restored and we get into infinite loop. It happens because of wrong is_in_pipeline values. Daniel S (26 Jan 2008) - Kevin Reed filed bug report #1879375 (http://curl.haxx.se/bug/view.cgi?id=1879375) which describes how libcurl Loading lib/multi.c +3 −0 Original line number Diff line number Diff line Loading @@ -871,6 +871,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, if(easy->easy_handle->state.is_in_pipeline) { /* Head back to the CONNECT state */ multistate(easy, CURLM_STATE_CONNECT); easy->easy_handle->state.is_in_pipeline = FALSE; result = CURLM_CALL_MULTI_PERFORM; easy->result = CURLE_OK; } Loading Loading @@ -1286,6 +1287,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, easy->easy_conn->bits.close = TRUE; Curl_removeHandleFromPipeline(easy->easy_handle, easy->easy_conn->recv_pipe); easy->easy_handle->state.is_in_pipeline = FALSE; if(CURL_SOCKET_BAD != easy->easy_conn->sock[SECONDARYSOCKET]) { /* if we failed anywhere, we must clean up the secondary socket if Loading @@ -1309,6 +1311,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, easy->easy_conn->recv_pipe); /* Check if we can move pending requests to send pipe */ checkPendPipeline(easy->easy_conn); easy->easy_handle->state.is_in_pipeline = FALSE; if(!retry) { /* if the URL is a follow-location and not just a retried request then figure out the URL here */ Loading Loading
CHANGES +5 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,11 @@ Changelog Daniel S (27 Jan 2008) - Dmitry Kurochkin: In "real world" testing I found more bugs in pipelining. Broken connection is not restored and we get into infinite loop. It happens because of wrong is_in_pipeline values. Daniel S (26 Jan 2008) - Kevin Reed filed bug report #1879375 (http://curl.haxx.se/bug/view.cgi?id=1879375) which describes how libcurl Loading
lib/multi.c +3 −0 Original line number Diff line number Diff line Loading @@ -871,6 +871,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, if(easy->easy_handle->state.is_in_pipeline) { /* Head back to the CONNECT state */ multistate(easy, CURLM_STATE_CONNECT); easy->easy_handle->state.is_in_pipeline = FALSE; result = CURLM_CALL_MULTI_PERFORM; easy->result = CURLE_OK; } Loading Loading @@ -1286,6 +1287,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, easy->easy_conn->bits.close = TRUE; Curl_removeHandleFromPipeline(easy->easy_handle, easy->easy_conn->recv_pipe); easy->easy_handle->state.is_in_pipeline = FALSE; if(CURL_SOCKET_BAD != easy->easy_conn->sock[SECONDARYSOCKET]) { /* if we failed anywhere, we must clean up the secondary socket if Loading @@ -1309,6 +1311,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, easy->easy_conn->recv_pipe); /* Check if we can move pending requests to send pipe */ checkPendPipeline(easy->easy_conn); easy->easy_handle->state.is_in_pipeline = FALSE; if(!retry) { /* if the URL is a follow-location and not just a retried request then figure out the URL here */ Loading