From: Pavel Filipenský Date: Thu, 7 Oct 2021 10:08:22 +0000 (+0200) Subject: s3:winbindd: Fix winbindd child logfile name handling X-Git-Tag: ldb-2.5.0~493 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b92589c31f0eb3eaf2b3b1867e10b759f6a2edda;p=thirdparty%2Fsamba.git s3:winbindd: Fix winbindd child logfile name handling BUG: https://bugzilla.samba.org/show_bug.cgi?id=14852 Handling of logfile name for main and child winbindd must ensure: 1) Log directory is selected in this order: * -l option of winbindd * "log file" parameter in smb.conf * compile time value '/usr/local/samba/var' 2) Log filename pattern * parent process uses log.winbindd * child uses log.wb- 3) Log reopen works for both parent and child (i.e. log filename is not changed) * kill -HUP * smbcontrol reload-config This commit removes 3 calls of is_default_dyn_LOGFILEBASE() to make sure that: - 1st removal: child uses log.wb- after the fork - 2nd removal: child after HUP signal, does not switch to log.winbindd - 3rd removal: child after smbcontrol reload-config, does not switch to log.winbindd Interesting commits: bfa1b2a8 1484b7f3 3b015a4c d1f7a371 Signed-off-by: Pavel Filipenský Reviewed-by: Ralph Boehme Reviewed-by: Andreas Schneider --- diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c index e19dfafc52f..b275dfb128c 100644 --- a/source3/winbindd/winbindd_dual.c +++ b/source3/winbindd/winbindd_dual.c @@ -1544,15 +1544,16 @@ NTSTATUS winbindd_reinit_after_fork(const struct winbindd_child *myself, close_conns_after_fork(); - if (is_default_dyn_LOGFILEBASE() && logfilename) { + if (logfilename != NULL) { lp_set_logfile(logfilename); reopen_logs(); } - if (!winbindd_setup_sig_term_handler(false)) + if (!winbindd_setup_sig_term_handler(false)) { return NT_STATUS_NO_MEMORY; - if (!winbindd_setup_sig_hup_handler( - !is_default_dyn_LOGFILEBASE() ? NULL : logfilename)) { + } + + if (!winbindd_setup_sig_hup_handler(logfilename)) { return NT_STATUS_NO_MEMORY; } @@ -1777,7 +1778,7 @@ static bool fork_domain_child(struct winbindd_child *child) winbind_msg_disconnect_dc); messaging_register( global_messaging_context(), - !is_default_dyn_LOGFILEBASE() ? NULL : child->logfilename, + child->logfilename, MSG_SMB_CONF_UPDATED, winbindd_msg_reload_services_child);