]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
lib: don't compare fd to FD_SETSIZE when using poll
authorMark Swaanenburg <mswaanen@amazon.com>
Fri, 11 Jun 2021 06:27:00 +0000 (06:27 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 11 Jun 2021 08:33:32 +0000 (10:33 +0200)
FD_SETSIZE is irrelevant when using poll. So ensuring that the file
descriptor is smaller than FD_SETSIZE in VALID_SOCK, can cause
multi_wait to ignore perfectly valid file descriptors and simply wait
for 1s to avoid hammering the CPU in a busy loop.

Fixes #7240
Closes #7241

lib/select.h

index 4db64877bb5da1e5a7fd48470c32792e26d6df36..19da1e774be93867de591397aa0ff922968bfc61 100644 (file)
@@ -106,7 +106,11 @@ int tpf_select_libcurl(int maxfds, fd_set* reads, fd_set* writes,
   } \
 } while(0)
 #else
+#ifdef HAVE_POLL_FINE
+#define VALID_SOCK(s) ((s) >= 0)  /* FD_SETSIZE is irrelevant for poll */
+#else
 #define VALID_SOCK(s) (((s) >= 0) && ((s) < FD_SETSIZE))
+#endif
 #define VERIFY_SOCK(x) do { \
   if(!VALID_SOCK(x)) { \
     SET_SOCKERRNO(EINVAL); \