summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2013-10-15 08:23:10 +0000
committerAndreas Schneider <asn@samba.org>2013-10-21 17:52:35 +0200
commitc6909887c26d4e827633acd50b11cf08c6aee0f7 (patch)
tree53cd69104ce0926b3224bade59fa77bc389c7a92
parent5ea154bf25b6269e5c8d3c30bed88defc785f4ae (diff)
downloadsamba-c6909887c26d4e827633acd50b11cf08c6aee0f7.tar.gz
samba-c6909887c26d4e827633acd50b11cf08c6aee0f7.tar.bz2
samba-c6909887c26d4e827633acd50b11cf08c6aee0f7.zip
nsswitch: Fix short writes in winbind_write_sock
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>
-rw-r--r--nsswitch/wb_common.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/nsswitch/wb_common.c b/nsswitch/wb_common.c
index c56a76f826..5fde8d0f13 100644
--- a/nsswitch/wb_common.c
+++ b/nsswitch/wb_common.c
@@ -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 */