diff options
author | Peter Wang <novalazy@gmail.com> | 2014-07-29 06:33:07 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2014-08-11 15:10:13 +0200 |
commit | 97d2e4bd75d1be26b48f37900b7b719c418e0ac6 (patch) | |
tree | fe32345ae1e0036d93fa2a66f58466e5ddff8930 /lib/select.c | |
parent | 33a95659e200f443cfe1ef6f057f71e5afe16f9d (diff) | |
download | curl-97d2e4bd75d1be26b48f37900b7b719c418e0ac6.tar.gz |
Curl_poll + Curl_wait_ms: fix timeout return value
Curl_poll and Curl_wait_ms require the fix applied to Curl_socket_check
in commits b61e8b8 and c771968:
When poll or select are interrupted and coincides with the timeout
elapsing, the functions return -1 indicating an error instead of 0 for
the timeout.
Diffstat (limited to 'lib/select.c')
-rw-r--r-- | lib/select.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/select.c b/lib/select.c index da3082dda..bb9b8b0db 100644 --- a/lib/select.c +++ b/lib/select.c @@ -108,8 +108,10 @@ int Curl_wait_ms(int timeout_ms) if(error && error_not_EINTR) break; pending_ms = timeout_ms - elapsed_ms; - if(pending_ms <= 0) + if(pending_ms <= 0) { + r = 0; /* Simulate a "call timed out" case */ break; + } } while(r == -1); #endif /* USE_WINSOCK */ if(r) @@ -432,8 +434,10 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) break; if(timeout_ms > 0) { pending_ms = timeout_ms - elapsed_ms; - if(pending_ms <= 0) + if(pending_ms <= 0) { + r = 0; /* Simulate a "call timed out" case */ break; + } } } while(r == -1); @@ -517,8 +521,10 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) break; if(timeout_ms > 0) { pending_ms = timeout_ms - elapsed_ms; - if(pending_ms <= 0) + if(pending_ms <= 0) { + r = 0; /* Simulate a "call timed out" case */ break; + } } } while(r == -1); |