aboutsummaryrefslogtreecommitdiff
path: root/lib/easy.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2019-06-08 23:03:03 +0200
committerDaniel Stenberg <daniel@haxx.se>2019-06-09 18:33:59 +0200
commit680f1413321c0bad593a69a86511df4d98a3b5df (patch)
tree500ec23c0a46693f449e3ed4758281dd36cb3f92 /lib/easy.c
parentcf1ec70e721544ba39652abd6331dde6bbf9108d (diff)
unpause: trigger a timeout for event-based transfers
... so that timeouts or other state machine actions get going again after a changing pause state. For example, if the last delivery was paused there's no pending socket activity. Reported-by: sstruchtrup on github Fixes #3994 Closes #4001
Diffstat (limited to 'lib/easy.c')
-rw-r--r--lib/easy.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/easy.c b/lib/easy.c
index 4a6f96567..a4fff5b36 100644
--- a/lib/easy.c
+++ b/lib/easy.c
@@ -1038,8 +1038,11 @@ CURLcode curl_easy_pause(struct Curl_easy *data, int action)
to have this handle checked soon */
if(!result &&
((newstate&(KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
- (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) )
+ (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) ) {
Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */
+ if(data->multi)
+ Curl_update_timer(data->multi);
+ }
/* This transfer may have been moved in or out of the bundle, update
the corresponding socket callback, if used */