mirror of
https://github.com/moparisthebest/curl
synced 2024-11-11 12:05:06 -05:00
Dmitry Kurochkin's pipelining close-down segfault fix
This commit is contained in:
parent
34cf35051a
commit
79cb74f03a
@ -584,13 +584,18 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
|
|||||||
alive connections when this is removed */
|
alive connections when this is removed */
|
||||||
multi->num_alive--;
|
multi->num_alive--;
|
||||||
|
|
||||||
if(easy->easy_handle->state.is_in_pipeline &&
|
if(easy->easy_conn &&
|
||||||
|
easy->easy_handle->state.is_in_pipeline &&
|
||||||
easy->state > CURLM_STATE_WAITDO &&
|
easy->state > CURLM_STATE_WAITDO &&
|
||||||
easy->state < CURLM_STATE_COMPLETED)
|
easy->state < CURLM_STATE_COMPLETED) {
|
||||||
/* If the handle is in a pipeline and has started sending off its
|
/* If the handle is in a pipeline and has started sending off its
|
||||||
request but not received its reponse yet, we need to close
|
request but not received its reponse yet, we need to close
|
||||||
connection. */
|
connection. */
|
||||||
easy->easy_conn->bits.close = TRUE;
|
easy->easy_conn->bits.close = TRUE;
|
||||||
|
/* Set connection owner so that Curl_done() closes it.
|
||||||
|
We can sefely do this here since connection is killed. */
|
||||||
|
easy->easy_conn->data = easy->easy_handle;
|
||||||
|
}
|
||||||
|
|
||||||
/* The timer must be shut down before easy->multi is set to NULL,
|
/* The timer must be shut down before easy->multi is set to NULL,
|
||||||
else the timenode will remain in the splay tree after
|
else the timenode will remain in the splay tree after
|
||||||
|
Loading…
Reference in New Issue
Block a user