--- smbd/server.c.orig Tue Mar 23 14:57:50 2004 +++ smbd/server.c Tue Mar 23 20:39:15 2004 @@ -250,6 +250,9 @@ set_socket_options(s,"SO_KEEPALIVE"); set_socket_options(s,user_socket_options); + /* set server socket to non-blocking */ + set_blocking(s,False); + if (listen(s, SMBD_LISTEN_BACKLOG) == -1) { DEBUG(0,("listen: %s\n",strerror(errno))); close(s); @@ -286,6 +289,9 @@ set_socket_options(s,"SO_KEEPALIVE"); set_socket_options(s,user_socket_options); + /* set server socket to non-blocking */ + set_blocking(s,False); + if (listen(s, SMBD_LISTEN_BACKLOG) == -1) { DEBUG(0,("open_sockets_smbd: listen: %s\n", strerror(errno))); @@ -377,6 +383,9 @@ strerror(errno))); continue; } + + /* ensure child is set to blocking mode */ + set_blocking(smbd_server_fd(),True); if (smbd_server_fd() != -1 && interactive) return True;