From e337124c555aee32f0d075b8008c77da3065c1e1 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 22 May 2009 19:29:46 +0200 Subject: Fix closed_fd(): select returning 0 means no fd listening --- source3/lib/wb_reqtrans.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'source3') diff --git a/source3/lib/wb_reqtrans.c b/source3/lib/wb_reqtrans.c index 16d71fe03e..038e5bda17 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 { -- cgit