From a55edcea6530e369b467b00208c58f73f3609307 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Thu, 25 Jul 2019 10:26:16 +0200 Subject: multi: call detach_connection before Curl_disconnect Curl_disconnect bails out if conn->easyq is not empty, detach_connection needs to be called first to remove the current easy from the queue. Fixes #4144 Closes #4151 --- lib/multi.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/multi.c b/lib/multi.c index 2b6b1bc52..a9fd1f8b6 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -2012,13 +2012,15 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, if(stream_error) { /* Don't attempt to send data over a connection that timed out */ bool dead_connection = result == CURLE_OPERATION_TIMEDOUT; - /* disconnect properly */ - Curl_disconnect(data, data->conn, dead_connection); + struct connectdata *conn = data->conn; /* This is where we make sure that the conn pointer is reset. We don't have to do this in every case block above where a failure is detected */ detach_connnection(data); + + /* disconnect properly */ + Curl_disconnect(data, conn, dead_connection); } } else if(data->mstate == CURLM_STATE_CONNECT) { -- cgit v1.2.3