Hi Daniel,

> it does not actually make poll() function correctly. We're still passing
> HANDLE objects to the rpl_select() method, instead of calling
> the native select() method.

I don't agree with your reasoning. The select() calls in lib/poll.c:511 and
lib/poll.c:547 is not passing a HANDLE, rather it passes bit masks of FDs
that correspond to SOCKETs.  Therefore I propose this patch:


diff --git a/lib/poll.c b/lib/poll.c
index c4b2127..2c6e879 100644
--- a/lib/poll.c
+++ b/lib/poll.c
@@ -80,6 +80,14 @@
    first argument, not any possible gnulib override.  */
 # undef recv
 
+/* Here it does not matter whether we use the select() function from Windows,
+   that works only when all indicated FDs correspond to sockets and that
+   returns its error code in WSAGetLastError(), or the gnulib override that
+   does not have this limitation and that returns its error code in errno.
+   To simplify testing, use the lower-level Windows select() function
+   always.  */
+# undef select
+
 static BOOL IsConsoleHandle (HANDLE h)
 {
   DWORD mode;


Reply via email to