diff options
author | Andrew Bartlett <abartlet@samba.org> | 2011-07-18 17:07:25 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-07-20 09:17:09 +1000 |
commit | 485898458a1f786febd400be30bb3917fe5f71eb (patch) | |
tree | 9ec865e0baddf3e65960e329a812f35bd3a093b1 /source3 | |
parent | 3c9d01e3e58e2217915317406541ac8c6f6dcf92 (diff) | |
download | samba-485898458a1f786febd400be30bb3917fe5f71eb.tar.gz samba-485898458a1f786febd400be30bb3917fe5f71eb.tar.bz2 samba-485898458a1f786febd400be30bb3917fe5f71eb.zip |
debug: log early messages to stdout, and keep it open
The --log-stdout option was compromised by the log file descriptors being
closed once the file process forked.
Andrew Bartlett
Signed-off-by: Andrew Tridgell <tridge@samba.org>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/nmbd/nmbd.c | 5 | ||||
-rw-r--r-- | source3/smbd/server.c | 10 | ||||
-rw-r--r-- | source3/winbindd/winbindd.c | 3 |
3 files changed, 15 insertions, 3 deletions
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c index d8a4b17a07..e8a8b0ead9 100644 --- a/source3/nmbd/nmbd.c +++ b/source3/nmbd/nmbd.c @@ -766,6 +766,8 @@ static bool open_sockets(bool isdaemon, int port) talloc_enable_null_tracking(); frame = talloc_stackframe(); + setup_logging(argv[0], DEBUG_DEFAULT_STDOUT); + load_case_tables(); global_nmb_port = NMB_PORT; @@ -840,8 +842,9 @@ static bool open_sockets(bool isdaemon, int port) DEBUG(0,("ERROR: Can't log to stdout (-S) unless daemon is in foreground (-F) or interactive (-i)\n")); exit(1); } + if (log_stdout) { - setup_logging( argv[0], DEBUG_STDOUT); + setup_logging(argv[0], DEBUG_STDOUT); } else { setup_logging( argv[0], DEBUG_FILE); } diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 6fc2a14fc4..f51565a411 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -428,7 +428,9 @@ static void smbd_accept_connection(struct tevent_context *ev, /* close our standard file descriptors */ - close_low_fds(False); + if (!debug_get_output_is_stdout()) { + close_low_fds(False); /* Don't close stderr */ + } /* * Can't use TALLOC_FREE here. Nulling out the argument to it @@ -910,6 +912,8 @@ extern void build_options(bool screen); talloc_enable_null_tracking(); frame = talloc_stackframe(); + setup_logging(argv[0], DEBUG_DEFAULT_STDOUT); + load_case_tables(); smbd_init_globals(); @@ -1287,7 +1291,9 @@ extern void build_options(bool screen); smbd_server_conn->sock = dup(0); /* close our standard file descriptors */ - close_low_fds(False); /* Don't close stderr */ + if (!debug_get_output_is_stdout()) { + close_low_fds(False); /* Don't close stderr */ + } #ifdef HAVE_ATEXIT atexit(killkids); diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 469d64e41d..dd6ac16cfd 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -1232,6 +1232,8 @@ int main(int argc, char **argv, char **envp) talloc_enable_null_tracking(); frame = talloc_stackframe(); + setup_logging("winbindd", DEBUG_DEFAULT_STDOUT); + /* glibc (?) likes to print "User defined signal 1" and exit if a SIGUSR[12] is received before a handler is installed */ @@ -1316,6 +1318,7 @@ int main(int argc, char **argv, char **envp) SAFE_FREE(lfile); } } + if (log_stdout) { setup_logging("winbindd", DEBUG_STDOUT); } else { |