aboutsummaryrefslogtreecommitdiff
path: root/lib/select.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/select.c')
-rw-r--r--lib/select.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/select.c b/lib/select.c
index 7d6a6234f..2e1f38e5f 100644
--- a/lib/select.c
+++ b/lib/select.c
@@ -398,6 +398,20 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
}
} while(r == -1);
+ if(r < 0)
+ return -1;
+ if(r == 0)
+ return 0;
+
+ for (i = 0; i < nfds; i++) {
+ if(ufds[i].fd == CURL_SOCKET_BAD)
+ continue;
+ if(ufds[i].revents & POLLHUP)
+ ufds[i].revents |= POLLIN;
+ if(ufds[i].revents & POLLERR)
+ ufds[i].revents |= (POLLIN|POLLOUT);
+ }
+
#else /* HAVE_POLL_FINE */
FD_ZERO(&fds_read);