19 lines
530 B
Diff
19 lines
530 B
Diff
diff --git a/lib/select.c b/lib/select.c
|
|
index c16358d56ca50..2ac07467728c6 100644
|
|
--- a/lib/select.c
|
|
+++ b/lib/select.c
|
|
@@ -310,8 +310,12 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms)
|
|
else
|
|
pending_ms = 0;
|
|
r = poll(ufds, nfds, pending_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;
|
|
+ }
|
|
|
|
for(i = 0; i < nfds; i++) {
|
|
if(ufds[i].fd == CURL_SOCKET_BAD)
|