mirror of
https://github.com/moparisthebest/curl
synced 2024-11-05 00:55:04 -05:00
pause: force-drain the transfer on unpause
... since the socket might not actually be readable anymore when for example the data is already buffered in the TLS layer. Fixes #4966 Reported-by: Anders Berg Closes #5000
This commit is contained in:
parent
0e06c1637b
commit
fa0216b294
@ -1033,6 +1033,7 @@ CURLcode curl_easy_pause(struct Curl_easy *data, int action)
|
|||||||
to have this handle checked soon */
|
to have this handle checked soon */
|
||||||
if((newstate & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
|
if((newstate & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
|
||||||
(KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) {
|
(KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) {
|
||||||
|
data->state.drain++;
|
||||||
Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */
|
Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */
|
||||||
if(data->multi)
|
if(data->multi)
|
||||||
Curl_update_timer(data->multi);
|
Curl_update_timer(data->multi);
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -1217,7 +1217,8 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
|||||||
else
|
else
|
||||||
fd_write = CURL_SOCKET_BAD;
|
fd_write = CURL_SOCKET_BAD;
|
||||||
|
|
||||||
if(conn->data->state.drain) {
|
if(data->state.drain) {
|
||||||
|
data->state.drain--;
|
||||||
select_res |= CURL_CSELECT_IN;
|
select_res |= CURL_CSELECT_IN;
|
||||||
DEBUGF(infof(data, "Curl_readwrite: forcibly told to drain data\n"));
|
DEBUGF(infof(data, "Curl_readwrite: forcibly told to drain data\n"));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user