From d293bf4a789e7a02dd5ea40bcd81d23698859641 Mon Sep 17 00:00:00 2001 From: Mark Swaanenburg Date: Fri, 11 Jun 2021 06:27:00 +0000 Subject: [PATCH] lib: don't compare fd to FD_SETSIZE when using poll 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 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/select.h b/lib/select.h index 4db64877bb..19da1e774b 100644 --- a/lib/select.h +++ b/lib/select.h @@ -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); \