nsswitch: Fix short writes in winbind_write_sock
authorVolker Lendecke <vl@samba.org>
Tue, 15 Oct 2013 08:23:10 +0000 (08:23 +0000)
committerAndreas Schneider <asn@samba.org>
Mon, 21 Oct 2013 15:52:35 +0000 (17:52 +0200)
We set the socket to nonblocking and don't handle EAGAIN right. We do
a poll anyway, so wait for writability, which should fix this.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=10195
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
nsswitch/wb_common.c

index c56a76f82612b1017853b2734261636e67cadf94..5fde8d0f1385fb8b3d2759ac54afaf62433983c9 100644 (file)
@@ -395,9 +395,9 @@ static int winbind_write_sock(void *buffer, int count, int recursing,
                   call would not block by calling poll(). */
 
                pfd.fd = fd;
-               pfd.events = POLLIN|POLLHUP;
+               pfd.events = POLLIN|POLLOUT|POLLHUP;
 
-               ret = poll(&pfd, 1, 0);
+               ret = poll(&pfd, 1, -1);
                if (ret == -1) {
                        winbind_close_sock();
                        return -1;                   /* poll error */