From 51d4b3c55d6e14f9bf9de24367f9f76ba20fa393 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Thu, 18 Aug 2011 12:35:02 -0400 Subject: [PATCH] s3-prefork: Listening fds must be in non-blocking mode Signed-off-by: Andreas Schneider Signed-off-by: Simo Sorce --- source3/lib/server_prefork.c | 2 ++ source3/lib/server_prefork.h | 3 +++ 2 files changed, 5 insertions(+) diff --git a/source3/lib/server_prefork.c b/source3/lib/server_prefork.c index 016f65c5c37..a241e24798e 100644 --- a/source3/lib/server_prefork.c +++ b/source3/lib/server_prefork.c @@ -83,6 +83,8 @@ bool prefork_create_pool(TALLOC_CTX *mem_ctx, } for (i = 0; i < listen_fd_size; i++) { pfp->listen_fds[i] = listen_fds[i]; + /* force sockets in non-blocking mode */ + set_blocking(listen_fds[i], false); } pfp->main_fn = main_fn; pfp->private_data = private_data; diff --git a/source3/lib/server_prefork.h b/source3/lib/server_prefork.h index 1d203e6317e..703080bcd79 100644 --- a/source3/lib/server_prefork.h +++ b/source3/lib/server_prefork.h @@ -109,6 +109,9 @@ typedef void (prefork_sigchld_fn_t)(struct tevent_context *ev_ctx, * @param pf_pool The allocated pool. * * @return True if it was successful, False otherwise. +* +* NOTE: each listen_fd is forced to non-blocking mode once handed over. +* You should not toush listen_fds once you hand the to the prefork library. */ bool prefork_create_pool(TALLOC_CTX *mem_ctx, struct tevent_context *ev_ctx, -- 2.11.4.GIT