diff --git a/lib/select.c b/lib/select.c index ee04373427a6172f10f0262e9703573dd65170ff..3069a0c0089ec8256f1b1b6058a8040b45f1c808 100644 --- a/lib/select.c +++ b/lib/select.c @@ -98,7 +98,7 @@ int Curl_select(curl_socket_t readfd, curl_socket_t writefd, int timeout_ms) fd_set fds_read; fd_set fds_write; fd_set fds_err; - int maxfd; + curl_socket_t maxfd; int r; int ret; @@ -176,7 +176,7 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) fd_set fds_read; fd_set fds_write; fd_set fds_err; - int maxfd; + curl_socket_t maxfd; int r; unsigned int i; @@ -186,12 +186,14 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) maxfd = -1; for (i = 0; i < nfds; i++) { - if (ufds[i].fd < 0) + if (ufds[i].fd == CURL_SOCKET_BAD) continue; +#ifndef WIN32 /* This is harmless and wrong on Win32 */ if (ufds[i].fd >= FD_SETSIZE) { errno = EINVAL; return -1; } +#endif if (ufds[i].fd > maxfd) maxfd = ufds[i].fd; if (ufds[i].events & POLLIN) @@ -220,7 +222,7 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) r = 0; for (i = 0; i < nfds; i++) { ufds[i].revents = 0; - if (ufds[i].fd < 0) + if (ufds[i].fd == CURL_SOCKET_BAD) continue; if (FD_ISSET(ufds[i].fd, &fds_read)) ufds[i].revents |= POLLIN; diff --git a/lib/select.h b/lib/select.h index b3d9ce3ae11128ef1f4a07f50987dfbde97fb74a..c3cb220573092d587d46246c422996cd6ee744b5 100644 --- a/lib/select.h +++ b/lib/select.h @@ -36,7 +36,7 @@ struct pollfd { - int fd; + curl_socket_t fd; short events; short revents; };