From: Volker Lendecke Date: Fri, 22 May 2009 17:29:46 +0000 (+0200) Subject: Fix closed_fd(): select returning 0 means no fd listening X-Git-Tag: tdb-1.1.5~415 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e337124c555aee32f0d075b8008c77da3065c1e1;p=thirdparty%2Fsamba.git Fix closed_fd(): select returning 0 means no fd listening --- diff --git a/source3/lib/wb_reqtrans.c b/source3/lib/wb_reqtrans.c index 16d71fe03e3..038e5bda171 100644 --- a/source3/lib/wb_reqtrans.c +++ b/source3/lib/wb_reqtrans.c @@ -342,6 +342,7 @@ static bool closed_fd(int fd) { struct timeval tv; fd_set r_fds; + int selret; if (fd == -1) { return true; @@ -351,12 +352,14 @@ static bool closed_fd(int fd) FD_SET(fd, &r_fds); ZERO_STRUCT(tv); - if ((select(fd+1, &r_fds, NULL, NULL, &tv) == -1) - || FD_ISSET(fd, &r_fds)) { + selret = select(fd+1, &r_fds, NULL, NULL, &tv); + if (selret == -1) { return true; } - - return false; + if (selret == 0) { + return false; + } + return (FD_ISSET(fd, &r_fds)); } struct wb_simple_trans_state {