summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2011-07-18 17:07:25 +1000
committerAndrew Bartlett <abartlet@samba.org>2011-07-20 09:17:09 +1000
commit485898458a1f786febd400be30bb3917fe5f71eb (patch)
tree9ec865e0baddf3e65960e329a812f35bd3a093b1 /source3
parent3c9d01e3e58e2217915317406541ac8c6f6dcf92 (diff)
downloadsamba-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.c5
-rw-r--r--source3/smbd/server.c10
-rw-r--r--source3/winbindd/winbindd.c3
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 {