winbind: fix smbd hanging on Solaris when winbindd closes socket.
commit843d631eae656f85bd62fd015403987b1b8d0180
authorMichael Adam <obnox@samba.org>
Mon, 27 Oct 2008 13:28:44 +0000 (27 14:28 +0100)
committerKarolin Seeger <kseeger@samba.org>
Tue, 18 Nov 2008 09:06:44 +0000 (18 10:06 +0100)
treeb590dc51e8eedb8810de19f5448bf0be1ef4d4c6
parent8d318775360d2d5a09f83ec0527adcbfee73b607
winbind: fix smbd hanging on Solaris when winbindd closes socket.

On some versions of Solaris, we observed a strange effect of close(2)
on a socket: After the server (here winbindd) called close, the client fd
was not marked as readable for select. And a write call to the fd did
not produce an error EPIPE but just returned as if successful.

So while winbindd had called remove_client(), the corresponding smbd
still thought that it was connected, but failed to retrieve answers
for its queries.

This patch works around the problem by forcing the client fd to
the readable state: Just write one byte into the socket before
closing.

Michael
(cherry picked from commit 4528d0b5b32ab4cbbc2d5b09cd0d49062120e50b)
source/winbindd/winbindd.c