mirror of
https://github.com/curl/curl.git
synced 2026-08-01 19:40:32 +03:00
transfer: return without select when the read loop reached maxcount
Regression added in 790d6de485. The was then added to avoid one
particular transfer to starve out others. But when aborting due to
reading the maxcount, the connection must be marked to be read from
again without first doing a select as for some protocols (like SFTP/SCP)
the data may already have been read off the socket.
Reported-by: Dan Donahue
Bug: https://curl.haxx.se/mail/lib-2016-07/0057.html
This commit is contained in:
parent
497e7c9d34
commit
6eb60c2dc5
3 changed files with 24 additions and 7 deletions
|
|
@ -1810,6 +1810,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
|||
{
|
||||
char *newurl = NULL;
|
||||
bool retry = FALSE;
|
||||
bool comeback = FALSE;
|
||||
|
||||
/* check if over send speed */
|
||||
if((data->set.max_send_speed > 0) &&
|
||||
|
|
@ -1844,7 +1845,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
|||
}
|
||||
|
||||
/* read/write data if it is ready to do so */
|
||||
result = Curl_readwrite(data->easy_conn, data, &done);
|
||||
result = Curl_readwrite(data->easy_conn, data, &done, &comeback);
|
||||
|
||||
k = &data->req;
|
||||
|
||||
|
|
@ -1950,6 +1951,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
|||
rc = CURLM_CALL_MULTI_PERFORM;
|
||||
}
|
||||
}
|
||||
else if(comeback)
|
||||
rc = CURLM_CALL_MULTI_PERFORM;
|
||||
|
||||
free(newurl);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue