mirror of
https://github.com/curl/curl.git
synced 2026-08-25 09:43:32 +03:00
transfer: do not use EXPIRE_NOW while blocked
- When a transfer sets `data->state.select_bits`, it is scheduled for rerun with EXPIRE_NOW. If such a transfer is blocked (due to PAUSE, for example), this will lead to a busy loop. - multi.c: check for transfer block - sendf.*: add Curl_xfer_is_blocked() - sendf.*: add client reader `is_paused()` callback - implement is_paused()` callback where needed Closes #13908
This commit is contained in:
parent
1424d507aa
commit
3841569ec8
10 changed files with 86 additions and 2 deletions
|
|
@ -135,4 +135,11 @@ CURLcode Curl_xfer_recv(struct Curl_easy *data,
|
|||
CURLcode Curl_xfer_send_close(struct Curl_easy *data);
|
||||
CURLcode Curl_xfer_send_shutdown(struct Curl_easy *data, bool *done);
|
||||
|
||||
/**
|
||||
* Return TRUE iff the transfer is not done, but further progress
|
||||
* is blocked. For example when it is only receiving and its writer
|
||||
* is PAUSED.
|
||||
*/
|
||||
bool Curl_xfer_is_blocked(struct Curl_easy *data);
|
||||
|
||||
#endif /* HEADER_CURL_TRANSFER_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue