diff options
author | Andreas Schneider <asn@redhat.com> | 2010-03-26 11:17:37 +0100 |
---|---|---|
committer | Andreas Schneider <asn@redhat.com> | 2010-03-26 14:48:54 +0100 |
commit | a6f25fc635dce0b67422b271e09467e9ea854489 (patch) | |
tree | 7163e806229de11106198ec1eefc569f0cd384a0 | |
parent | f70e1b4d43995ac4c7ab020613d3f0af24eb03f6 (diff) | |
download | samba-a6f25fc635dce0b67422b271e09467e9ea854489.tar.gz samba-a6f25fc635dce0b67422b271e09467e9ea854489.tar.bz2 samba-a6f25fc635dce0b67422b271e09467e9ea854489.zip |
s3-smbd: Don't close stdout if we want to log to stdout.
-rw-r--r-- | lib/util/become_daemon.c | 10 | ||||
-rw-r--r-- | lib/util/util.h | 2 | ||||
-rw-r--r-- | source3/nmbd/nmbd.c | 2 | ||||
-rw-r--r-- | source3/smbd/server.c | 2 | ||||
-rw-r--r-- | source3/web/startstop.c | 6 | ||||
-rw-r--r-- | source3/winbindd/winbindd.c | 2 | ||||
-rw-r--r-- | source4/smbd/server.c | 2 |
7 files changed, 14 insertions, 12 deletions
diff --git a/lib/util/become_daemon.c b/lib/util/become_daemon.c index 3d06a4363d..2af16316b5 100644 --- a/lib/util/become_daemon.c +++ b/lib/util/become_daemon.c @@ -66,7 +66,7 @@ _PUBLIC_ void close_low_fds(bool stderr_too) Become a daemon, discarding the controlling terminal. ****************************************************************************/ -_PUBLIC_ void become_daemon(bool do_fork, bool no_process_group) +_PUBLIC_ void become_daemon(bool do_fork, bool no_process_group, bool log_stdout) { if (do_fork) { if (sys_fork()) { @@ -87,7 +87,9 @@ _PUBLIC_ void become_daemon(bool do_fork, bool no_process_group) } #endif /* HAVE_SETSID */ - /* Close fd's 0,1,2. Needed if started by rsh */ - close_low_fds(false); /* Don't close stderr, let the debug system - attach it to the logfile */ + if (!log_stdout) { + /* Close fd's 0,1,2. Needed if started by rsh */ + close_low_fds(false); /* Don't close stderr, let the debug system + attach it to the logfile */ + } } diff --git a/lib/util/util.h b/lib/util/util.h index b89a7d6050..8383344cd5 100644 --- a/lib/util/util.h +++ b/lib/util/util.h @@ -827,7 +827,7 @@ _PUBLIC_ void close_low_fds(bool stderr_too); /** Become a daemon, discarding the controlling terminal. **/ -_PUBLIC_ void become_daemon(bool do_fork, bool no_process_group); +_PUBLIC_ void become_daemon(bool do_fork, bool no_process_group, bool log_stdout); /** * Load a ini-style file. diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c index 4443dfae9f..5dc021a547 100644 --- a/source3/nmbd/nmbd.c +++ b/source3/nmbd/nmbd.c @@ -889,7 +889,7 @@ static bool open_sockets(bool isdaemon, int port) if (is_daemon && !opt_interactive) { DEBUG( 2, ( "Becoming a daemon.\n" ) ); - become_daemon(Fork, no_process_group); + become_daemon(Fork, no_process_group, log_stdout); } #if HAVE_SETPGID diff --git a/source3/smbd/server.c b/source3/smbd/server.c index e5cfc27794..49e2eda3ce 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -1235,7 +1235,7 @@ extern void build_options(bool screen); if (is_daemon && !interactive) { DEBUG( 3, ( "Becoming a daemon.\n" ) ); - become_daemon(Fork, no_process_group); + become_daemon(Fork, no_process_group, log_stdout); } #if HAVE_SETPGID diff --git a/source3/web/startstop.c b/source3/web/startstop.c index b24410a89f..81350e62f5 100644 --- a/source3/web/startstop.c +++ b/source3/web/startstop.c @@ -36,7 +36,7 @@ void start_smbd(void) } if (asprintf(&binfile, "%s/smbd", get_dyn_SBINDIR()) > 0) { - become_daemon(true, false); + become_daemon(true, false, false); execl(binfile, binfile, "-D", NULL); } exit(0); @@ -56,7 +56,7 @@ void start_nmbd(void) } if (asprintf(&binfile, "%s/nmbd", get_dyn_SBINDIR()) > 0) { - become_daemon(true, false); + become_daemon(true, false, false); execl(binfile, binfile, "-D", NULL); } exit(0); @@ -76,7 +76,7 @@ void start_winbindd(void) } if (asprintf(&binfile, "%s/winbindd", get_dyn_SBINDIR()) > 0) { - become_daemon(true, false); + become_daemon(true, false, false); execl(binfile, binfile, NULL); } exit(0); diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index b04fd5db2b..86304e98c5 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -1185,7 +1185,7 @@ int main(int argc, char **argv, char **envp) BlockSignals(False, SIGCHLD); if (!interactive) - become_daemon(Fork, no_process_group); + become_daemon(Fork, no_process_group, log_stdout); pidfile_create("winbindd"); diff --git a/source4/smbd/server.c b/source4/smbd/server.c index 83f6e7d806..a09da3ce76 100644 --- a/source4/smbd/server.c +++ b/source4/smbd/server.c @@ -336,7 +336,7 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[ if (opt_daemon) { DEBUG(3,("Becoming a daemon.\n")); - become_daemon(true, false); + become_daemon(true, false, false); } cleanup_tmp_files(cmdline_lp_ctx); |