From 52e822173aa3cd4f610531d32fbf943f026cdca6 Mon Sep 17 00:00:00 2001 From: Thomas Weißschuh Date: Sun, 3 Jul 2022 18:20:44 +0200 Subject: select: do not return fatal error on EINTR from poll() The same was done for select() in 5912da25 but poll() was missed. Bug: https://bugs.archlinux.org/task/75201 Reported-by: Alexandre Bury (gyscos at archlinux) Ref: https://github.com/curl/curl/issues/8921 Ref: https://github.com/curl/curl/pull/8961 Ref: https://github.com/curl/curl/commit/5912da25#r77584294 Closes https://github.com/curl/curl/pull/9091 --- lib/select.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/select.c b/lib/select.c index c16358d56..2ac074677 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) -- cgit v1.2.3-18-g5258