s3: Eliminiate sys_select_intr from client.c
authorVolker Lendecke <vl@samba.org>
Tue, 8 Feb 2011 16:56:10 +0000 (17:56 +0100)
committerVolker Lendecke <vlendec@samba.org>
Mon, 28 Feb 2011 15:40:19 +0000 (16:40 +0100)
source3/client/client.c

index 3e48b010798f8631dc13958ced0a1adb388bbae5..1ede29a0e6c92d79e7d939fa7ea736508c2ada44 100644 (file)
@@ -29,6 +29,7 @@
 #include "system/readline.h"
 #include "../libcli/smbreadline/smbreadline.h"
 #include "../libcli/security/security.h"
+#include "system/select.h"
 
 #ifndef REGISTER
 #define REGISTER 0
@@ -4735,11 +4736,10 @@ static bool finished;
 
 static void readline_callback(void)
 {
-       fd_set fds;
-       struct timeval timeout;
        static time_t last_t;
        struct timespec now;
        time_t t;
+       int ret, revents;
 
        clock_gettime_mono(&now);
        t = now.tv_sec;
@@ -4754,18 +4754,14 @@ static void readline_callback(void)
        if (cli->fd == -1)
                return;
 
-       FD_ZERO(&fds);
-       FD_SET(cli->fd,&fds);
-
-       timeout.tv_sec = 0;
-       timeout.tv_usec = 0;
-       sys_select_intr(cli->fd+1,&fds,NULL,NULL,&timeout);
-
        /* We deliberately use receive_smb_raw instead of
           client_receive_smb as we want to receive
           session keepalives and then drop them here.
        */
-       if (FD_ISSET(cli->fd,&fds)) {
+
+       ret = poll_intr_one_fd(cli->fd, POLLIN|POLLHUP, 0, &revents);
+
+       if ((ret > 0) && (revents & (POLLIN|POLLHUP|POLLERR))) {
                NTSTATUS status;
                size_t len;