diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2020-02-14 16:54:06 +0100 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2020-02-16 22:52:41 +0100 | 
| commit | d60b1b37a1682dee3a53bc6e15b44ecab9811297 (patch) | |
| tree | f6e181fbdfeff10499ccf3967853fa67bd4b0867 /lib | |
| parent | c188391a9fad6dcfa4b77b6180c19e0538e25caa (diff) | |
multi: if Curl_readwrite sets 'comeback' use expire, not loop
Otherwise, a very fast single transfer ricks starving out other
concurrent transfers.
Closes #4927
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/multi.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/multi.c b/lib/multi.c index 37a37a4f0..51154d6b2 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;      }  | 
