mirror of
https://github.com/curl/curl.git
synced 2025-02-23 15:10:03 +08:00
Curl_poll + Curl_wait_ms: fix timeout return value
Curl_poll and Curl_wait_ms require the fix applied to Curl_socket_check in commitsb61e8b8
andc771968
: 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.
This commit is contained in:
parent
33a95659e2
commit
97d2e4bd75
12
lib/select.c
12
lib/select.c
@ -108,8 +108,10 @@ int Curl_wait_ms(int timeout_ms)
|
|||||||
if(error && error_not_EINTR)
|
if(error && error_not_EINTR)
|
||||||
break;
|
break;
|
||||||
pending_ms = timeout_ms - elapsed_ms;
|
pending_ms = timeout_ms - elapsed_ms;
|
||||||
if(pending_ms <= 0)
|
if(pending_ms <= 0) {
|
||||||
|
r = 0; /* Simulate a "call timed out" case */
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
} while(r == -1);
|
} while(r == -1);
|
||||||
#endif /* USE_WINSOCK */
|
#endif /* USE_WINSOCK */
|
||||||
if(r)
|
if(r)
|
||||||
@ -432,8 +434,10 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
|
|||||||
break;
|
break;
|
||||||
if(timeout_ms > 0) {
|
if(timeout_ms > 0) {
|
||||||
pending_ms = timeout_ms - elapsed_ms;
|
pending_ms = timeout_ms - elapsed_ms;
|
||||||
if(pending_ms <= 0)
|
if(pending_ms <= 0) {
|
||||||
|
r = 0; /* Simulate a "call timed out" case */
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} while(r == -1);
|
} while(r == -1);
|
||||||
|
|
||||||
@ -517,8 +521,10 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
|
|||||||
break;
|
break;
|
||||||
if(timeout_ms > 0) {
|
if(timeout_ms > 0) {
|
||||||
pending_ms = timeout_ms - elapsed_ms;
|
pending_ms = timeout_ms - elapsed_ms;
|
||||||
if(pending_ms <= 0)
|
if(pending_ms <= 0) {
|
||||||
|
r = 0; /* Simulate a "call timed out" case */
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} while(r == -1);
|
} while(r == -1);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user