From 1bec3726bb8cfc09a574e57ff2802e7fa757bf6b Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 8 Aug 2003 21:10:28 +0000 Subject: [PATCH] Make do_block use poll() rather than select() (based on a patch by Mike Hearn). --- dlls/winsock/socket.c | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/dlls/winsock/socket.c b/dlls/winsock/socket.c index f6f3a4cff73..f97119efc43 100644 --- a/dlls/winsock/socket.c +++ b/dlls/winsock/socket.c @@ -103,6 +103,9 @@ # define HAVE_IPX #endif +#ifdef HAVE_SYS_POLL_H +# include +#endif #ifdef HAVE_SYS_TIME_H # include #endif @@ -633,24 +636,15 @@ static void fd_set_unimport( void* wsfds, int lfd[], BOOL b32 ) } } -static int do_block( int fd, int mask ) +/* utility: given an fd, will block until one of the events occurs */ +static inline int do_block( int fd, int events ) { - fd_set fds[3]; - int i, r; + struct pollfd pfd; - FD_ZERO(&fds[0]); - FD_ZERO(&fds[1]); - FD_ZERO(&fds[2]); - for (i=0; i<3; i++) - if (mask & (1<