select: return error from "lethal" poll/select errors

Adds two new error codes: CURLE_UNRECOVERABLE_POLL and
CURLM_UNRECOVERABLE_POLL one each for the easy and the multi interfaces.

Reported-by: Harry Sintonen
Fixes #8921
Closes #8961
This commit is contained in:
Daniel Stenberg 2022-06-08 11:03:07 +02:00
parent 7007324a6a
commit 5912da253b
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
10 changed files with 37 additions and 8 deletions

View file

@ -352,8 +352,12 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms)
value).
*/
r = our_select(maxfd, &fds_read, &fds_write, &fds_err, timeout_ms);
if(r <= 0)
if(r <= 0) {
if((r == -1) && (SOCKERRNO == EINTR))
/* make EINTR from select or poll not a "lethal" error */
r = 0;
return r;
}
r = 0;
for(i = 0; i < nfds; i++) {