From: Daniel Stenberg Date: Fri, 14 Feb 2020 15:54:06 +0000 (+0100) Subject: multi: if Curl_readwrite sets 'comeback' use expire, not loop X-Git-Tag: curl-7_69_0~111 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d60b1b37a1682dee3a53bc6e15b44ecab9811297;p=thirdparty%2Fcurl.git multi: if Curl_readwrite sets 'comeback' use expire, not loop Otherwise, a very fast single transfer ricks starving out other concurrent transfers. Closes #4927 --- diff --git a/lib/multi.c b/lib/multi.c index 37a37a4f0c..51154d6b22 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -2191,8 +2191,13 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, } } } - else if(comeback) - rc = CURLM_CALL_MULTI_PERFORM; + else if(comeback) { + /* This avoids CURLM_CALL_MULTI_PERFORM so that a very fast transfer + won't get stuck on this transfer at the expense of other concurrent + transfers */ + Curl_expire(data, 0, EXPIRE_RUN_NOW); + rc = CURLM_OK; + } break; }