summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2008-07-17 20:10:18 -0700
committerJeremy Allison <jra@samba.org>2008-07-17 20:10:18 -0700
commit1484b7f3b540a9a9ec77199cea034f6368f6d2ad (patch)
treeaa9953b1f419f46f969fde56b203b48803934c3f
parente9b8e887c1db8a86b15104db8043257c1fa3738b (diff)
downloadsamba-1484b7f3b540a9a9ec77199cea034f6368f6d2ad.tar.gz
samba-1484b7f3b540a9a9ec77199cea034f6368f6d2ad.tar.bz2
samba-1484b7f3b540a9a9ec77199cea034f6368f6d2ad.zip
From Jim McDonough
In reloading the smb.conf, if a "log file" is specified in smb.conf, winbind children will overwrite the logfile name to be the same as the parent. Jeremy. (This used to be commit 62d319cc1a2ef891866b2ddbd22f3ed0944356af)
-rw-r--r--source3/winbindd/winbindd.c18
-rw-r--r--source3/winbindd/winbindd_dual.c3
-rw-r--r--source3/winbindd/winbindd_proto.h2
3 files changed, 15 insertions, 8 deletions
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 4b7efe81eb..55ab58f7eb 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -59,7 +59,7 @@ struct messaging_context *winbind_messaging_context(void)
/* Reload configuration */
-static bool reload_services_file(void)
+static bool reload_services_file(const char *logfile)
{
bool ret;
@@ -71,6 +71,12 @@ static bool reload_services_file(void)
}
}
+ /* if this is a child, restore the logfile to the special
+ name - <domain>, idmap, etc. */
+ if (logfile && *logfile) {
+ lp_set_logfile(logfile);
+ }
+
reopen_logs();
ret = lp_load(get_dyn_CONFIGFILE(),False,False,True,True);
@@ -208,7 +214,7 @@ static void msg_reload_services(struct messaging_context *msg,
{
/* Flush various caches */
flush_caches();
- reload_services_file();
+ reload_services_file((const char *) private_data);
}
/* React on 'smbcontrol winbindd shutdown' in the same way as on SIGTERM*/
@@ -804,14 +810,14 @@ static bool remove_idle_client(void)
}
/* check if HUP has been received and reload files */
-void winbind_check_sighup(void)
+void winbind_check_sighup(const char *logfile)
{
if (do_sighup) {
DEBUG(3, ("got SIGHUP\n"));
flush_caches();
- reload_services_file();
+ reload_services_file(logfile);
do_sighup = False;
}
@@ -984,7 +990,7 @@ static void process_loop(void)
/* Check signal handling things */
winbind_check_sigterm(true);
- winbind_check_sighup();
+ winbind_check_sighup(NULL);
if (do_sigusr2) {
print_winbindd_status();
@@ -1136,7 +1142,7 @@ int main(int argc, char **argv, char **envp)
db_tdb2_setup_messaging(winbind_messaging_context(), true);
- if (!reload_services_file()) {
+ if (!reload_services_file(NULL)) {
DEBUG(0, ("error opening config file\n"));
exit(1);
}
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index c3bcb715bb..57ab627a5b 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -1148,7 +1148,8 @@ static bool fork_domain_child(struct winbindd_child *child)
/* check for signals */
winbind_check_sigterm(false);
- winbind_check_sighup();
+ winbind_check_sighup(override_logfile ? NULL :
+ child->logfilename);
run_events(winbind_event_context(), 0, NULL, NULL);
diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h
index 7f68cbfbc2..9fafd57cea 100644
--- a/source3/winbindd/winbindd_proto.h
+++ b/source3/winbindd/winbindd_proto.h
@@ -66,7 +66,7 @@ void setup_async_write(struct fd_event *event, void *data, size_t length,
void request_error(struct winbindd_cli_state *state);
void request_ok(struct winbindd_cli_state *state);
void request_finished_cont(void *private_data, bool success);
-void winbind_check_sighup(void);
+void winbind_check_sighup(const char *logfile);
void winbind_check_sigterm(bool in_parent);
int main(int argc, char **argv, char **envp);