diff options
author | Andrew Bartlett <abartlet@samba.org> | 2012-03-02 19:32:56 +1100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2012-03-04 10:14:34 +0100 |
commit | b07d504ca4e476d492beb5552344070e4f96464a (patch) | |
tree | ef1bebdd28e09a6ac8acc88a3abf8d518d23161c /source3 | |
parent | 679bbd014e03f60cddbcabfe0c6b5b8bae9fea4c (diff) | |
download | samba-b07d504ca4e476d492beb5552344070e4f96464a.tar.gz samba-b07d504ca4e476d492beb5552344070e4f96464a.tar.bz2 samba-b07d504ca4e476d492beb5552344070e4f96464a.zip |
change low FDs are handled in Samba
We now only close fds 0, 1, 2 when we are a forked daemon, and take
care not to close a file descriptor that we might need for foreground
stdin monitoring.
This should fix stdout logging in the lsa and epmapper deamons (ie in
make test).
Andrew Bartlett
Diffstat (limited to 'source3')
-rw-r--r-- | source3/printing/spoolssd.c | 3 | ||||
-rw-r--r-- | source3/rpc_server/epmd.c | 3 | ||||
-rw-r--r-- | source3/rpc_server/lsasd.c | 3 | ||||
-rw-r--r-- | source3/smbd/server.c | 12 |
4 files changed, 2 insertions, 19 deletions
diff --git a/source3/printing/spoolssd.c b/source3/printing/spoolssd.c index 9a5d1b0fef..5775505160 100644 --- a/source3/printing/spoolssd.c +++ b/source3/printing/spoolssd.c @@ -660,9 +660,6 @@ pid_t start_spoolssd(struct tevent_context *ev_ctx, return pid; } - /* child */ - close_low_fds(false); - status = reinit_after_fork(msg_ctx, ev_ctx, true); diff --git a/source3/rpc_server/epmd.c b/source3/rpc_server/epmd.c index 0d5e6ec6af..c28d8574c0 100644 --- a/source3/rpc_server/epmd.c +++ b/source3/rpc_server/epmd.c @@ -159,9 +159,6 @@ void start_epmd(struct tevent_context *ev_ctx, return; } - /* child */ - close_low_fds(false); - status = reinit_after_fork(msg_ctx, ev_ctx, true); diff --git a/source3/rpc_server/lsasd.c b/source3/rpc_server/lsasd.c index 575b863976..416a3b3c13 100644 --- a/source3/rpc_server/lsasd.c +++ b/source3/rpc_server/lsasd.c @@ -875,9 +875,6 @@ void start_lsasd(struct tevent_context *ev_ctx, return; } - /* child */ - close_low_fds(false); - /* save the parent process id so the children can use it later */ parent_id = procid_self(); diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 0fb7d16ef6..cab23bc6d5 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -504,12 +504,6 @@ static void smbd_accept_connection(struct tevent_context *ev, * them, counting worker smbds. */ CatchChild(); - /* close our standard file - descriptors */ - if (!debug_get_output_is_stdout()) { - close_low_fds(False); /* Don't close stderr */ - } - status = reinit_after_fork(msg_ctx, ev, true); @@ -1397,10 +1391,8 @@ extern void build_options(bool screen); goes away */ smbd_server_conn->sock = dup(0); - /* close our standard file descriptors */ - if (!debug_get_output_is_stdout()) { - close_low_fds(False); /* Don't close stderr */ - } + /* close stdin, stdout (if not logging to it), but not stderr */ + close_low_fds(true, !debug_get_output_is_stdout(), false); #ifdef HAVE_ATEXIT atexit(killkids); |