Author: tridge Date: 2004-10-28 07:34:11 +0000 (Thu, 28 Oct 2004) New Revision: 3313
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/lib/socket&rev=3313&nolog=1 Log: in socket_accept() make the new socket non-blocking unless SOCKET_FLAG_BLOCK is set. Modified: branches/SAMBA_4_0/source/lib/socket/socket_ipv4.c branches/SAMBA_4_0/source/lib/socket/socket_unix.c Changeset: Modified: branches/SAMBA_4_0/source/lib/socket/socket_ipv4.c =================================================================== --- branches/SAMBA_4_0/source/lib/socket/socket_ipv4.c 2004-10-28 06:45:28 UTC (rev 3312) +++ branches/SAMBA_4_0/source/lib/socket/socket_ipv4.c 2004-10-28 07:34:11 UTC (rev 3313) @@ -141,6 +141,14 @@ return map_nt_error_from_unix(errno); } + if (!(flags & SOCKET_FLAG_BLOCK)) { + int ret = set_blocking(new_fd, False); + if (ret == -1) { + close(new_fd); + return map_nt_error_from_unix(errno); + } + } + /* TODO: we could add a 'accept_check' hook here * which get the black/white lists via socket_set_accept_filter() * or something like that Modified: branches/SAMBA_4_0/source/lib/socket/socket_unix.c =================================================================== --- branches/SAMBA_4_0/source/lib/socket/socket_unix.c 2004-10-28 06:45:28 UTC (rev 3312) +++ branches/SAMBA_4_0/source/lib/socket/socket_unix.c 2004-10-28 07:34:11 UTC (rev 3313) @@ -136,6 +136,14 @@ return unixdom_error(errno); } + if (!(flags & SOCKET_FLAG_BLOCK)) { + int ret = set_blocking(new_fd, False); + if (ret == -1) { + close(new_fd); + return map_nt_error_from_unix(errno); + } + } + (*new_sock) = talloc_p(NULL, struct socket_context); if (!(*new_sock)) { close(new_fd);