From: Gergely Nagy Date: Thu, 25 Jul 2019 08:26:16 +0000 (+0200) Subject: multi: call detach_connection before Curl_disconnect X-Git-Tag: curl-7_66_0~202 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a55edcea6530e369b467b00208c58f73f3609307;p=thirdparty%2Fcurl.git 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 --- diff --git a/lib/multi.c b/lib/multi.c index 2b6b1bc522..a9fd1f8b62 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) {