URL: https://github.com/SSSD/sssd/pull/441 Author: lslebodn Title: #441: CHILD: Pass information about logger to children Action: synchronized
To pull the PR as Git branch: git remote add ghsssd https://github.com/SSSD/sssd git fetch ghsssd pull/441/head:pr441 git checkout pr441
From 699327f61a3698d6ba82e6c6ce1dd46a2b0663f1 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Tue, 7 Nov 2017 17:11:52 +0100 Subject: [PATCH 1/3] BUILD: Properly expand variables in sssd-ifp.service systemd[1]: [/usr/lib/systemd/system/sssd-ifp.service:9] Path '-@environment_file@' is not absolute, ignoring. sh-4.2# systemctl cat sssd-ifp.service # /usr/lib/systemd/system/sssd-ifp.service [Unit] Description=SSSD IFP Service responder Documentation=man:sssd-ifp(5) After=sssd.service BindsTo=sssd.service [Service] Environment=DEBUG_LOGGER=--logger=files EnvironmentFile=-@environment_file@ Type=dbus BusName=org.freedesktop.sssd.infopipe ExecStart=/usr/libexec/sssd/sssd_ifp --uid 0 --gid 0 --dbus-activated ${DEBUG_LOGGER} Resolves: https://pagure.io/SSSD/sssd/issue/3433 --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 286ba47e3..bbc90d9ba 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1491,7 +1491,7 @@ EXTRA_DIST += \ src/responder/ifp/org.freedesktop.sssd.infopipe.service.in \ $(NULL) -ifp_edit_cmd = $(SED) \ +ifp_edit_cmd = $(edit_cmd) \ -e 's|@ifp_exec_cmd[@]|$(ifp_exec_cmd)|g' \ -e 's|@ifp_systemdservice[@]|$(ifp_systemdservice)|g' \ -e 's|@ifp_restart[@]|$(ifp_restart)|g' From 47d79781893454336130295298c505725c8e57bc Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Wed, 8 Nov 2017 14:09:36 +0100 Subject: [PATCH 2/3] SYSTEMD: Clean pid file in corner cases SSSD can cleanup pid file in case of standard stopping of daemon. It's done in function monitor_cleanup. However monitor does not have a change to cleanup file in case of OOM or sending SIGKILL to monitor. Even though PIDFile is not necessary for services with Type notify we should let systemd to clean this file in unexpected situations. Resolves: https://pagure.io/SSSD/sssd/issue/3528 --- src/sysv/systemd/sssd.service.in | 1 + 1 file changed, 1 insertion(+) diff --git a/src/sysv/systemd/sssd.service.in b/src/sysv/systemd/sssd.service.in index cea848fac..0c515d34c 100644 --- a/src/sysv/systemd/sssd.service.in +++ b/src/sysv/systemd/sssd.service.in @@ -10,6 +10,7 @@ EnvironmentFile=-@environment_file@ ExecStart=@sbindir@/sssd -i ${DEBUG_LOGGER} Type=notify NotifyAccess=main +PIDFile=@localstatedir@/run/sssd.pid [Install] WantedBy=multi-user.target From dc4f6af0057de05b76352b920919436b6e9c96b6 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <[email protected]> Date: Wed, 8 Nov 2017 08:13:02 +0100 Subject: [PATCH 3/3] CHILD: Pass information about logger to children Variables debug_to_file or debug_to_stderr were not set because back-end already user parameter --logger=%s. And therefore logs were not sent to files. It could only work in case of direct usage of --debug-to-files in back-end via command configuration option. Resolves: https://pagure.io/SSSD/sssd/issue/3433 --- src/p11_child/p11_child_nss.c | 4 +++- src/providers/ad/ad_gpo_child.c | 3 ++- src/providers/ipa/selinux_child.c | 3 ++- src/providers/krb5/krb5_child.c | 3 ++- src/providers/ldap/ldap_child.c | 3 ++- src/util/child_common.c | 20 ++++++++------------ 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/p11_child/p11_child_nss.c b/src/p11_child/p11_child_nss.c index e7dbcb689..b0ec69be3 100644 --- a/src/p11_child/p11_child_nss.c +++ b/src/p11_child/p11_child_nss.c @@ -537,7 +537,7 @@ int main(int argc, const char *argv[]) int opt; poptContext pc; int debug_fd = -1; - char *opt_logger = NULL; + const char *opt_logger = NULL; errno_t ret; TALLOC_CTX *main_ctx = NULL; char *cert; @@ -673,7 +673,9 @@ int main(int argc, const char *argv[]) if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, "set_debug_file_from_fd failed.\n"); } + opt_logger = sss_logger_str[FILES_LOGGER]; } + sss_set_logger(opt_logger); DEBUG(SSSDBG_TRACE_FUNC, "p11_child started.\n"); diff --git a/src/providers/ad/ad_gpo_child.c b/src/providers/ad/ad_gpo_child.c index 5375cc691..a0bd6e13a 100644 --- a/src/providers/ad/ad_gpo_child.c +++ b/src/providers/ad/ad_gpo_child.c @@ -687,7 +687,7 @@ main(int argc, const char *argv[]) int opt; poptContext pc; int debug_fd = -1; - char *opt_logger = NULL; + const char *opt_logger = NULL; errno_t ret; int sysvol_gpt_version; int result; @@ -744,6 +744,7 @@ main(int argc, const char *argv[]) if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, "set_debug_file_from_fd failed.\n"); } + opt_logger = sss_logger_str[FILES_LOGGER]; } sss_set_logger(opt_logger); diff --git a/src/providers/ipa/selinux_child.c b/src/providers/ipa/selinux_child.c index 120492686..a7e20f715 100644 --- a/src/providers/ipa/selinux_child.c +++ b/src/providers/ipa/selinux_child.c @@ -206,7 +206,7 @@ int main(int argc, const char *argv[]) struct response *resp = NULL; ssize_t written; bool needs_update; - char *opt_logger = NULL; + const char *opt_logger = NULL; struct poptOption long_options[] = { POPT_AUTOHELP @@ -254,6 +254,7 @@ int main(int argc, const char *argv[]) if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, "set_debug_file_from_fd failed.\n"); } + opt_logger = sss_logger_str[FILES_LOGGER]; } sss_set_logger(opt_logger); diff --git a/src/providers/krb5/krb5_child.c b/src/providers/krb5/krb5_child.c index b44f3a20f..306d53452 100644 --- a/src/providers/krb5/krb5_child.c +++ b/src/providers/krb5/krb5_child.c @@ -3020,7 +3020,7 @@ int main(int argc, const char *argv[]) int opt; poptContext pc; int debug_fd = -1; - char *opt_logger = NULL; + const char *opt_logger = NULL; errno_t ret; krb5_error_code kerr; uid_t fast_uid; @@ -3097,6 +3097,7 @@ int main(int argc, const char *argv[]) if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, "set_debug_file_from_fd failed.\n"); } + opt_logger = sss_logger_str[FILES_LOGGER] ; } sss_set_logger(opt_logger); diff --git a/src/providers/ldap/ldap_child.c b/src/providers/ldap/ldap_child.c index baeed239d..c0618d6d8 100644 --- a/src/providers/ldap/ldap_child.c +++ b/src/providers/ldap/ldap_child.c @@ -599,7 +599,7 @@ int main(int argc, const char *argv[]) int kerr; int opt; int debug_fd = -1; - char *opt_logger = NULL; + const char *opt_logger = NULL; poptContext pc; TALLOC_CTX *main_ctx = NULL; uint8_t *buf = NULL; @@ -657,6 +657,7 @@ int main(int argc, const char *argv[]) if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, "set_debug_file_from_fd failed.\n"); } + opt_logger = sss_logger_str[FILES_LOGGER]; } sss_set_logger(opt_logger); diff --git a/src/util/child_common.c b/src/util/child_common.c index dc070f264..203c115f9 100644 --- a/src/util/child_common.c +++ b/src/util/child_common.c @@ -630,14 +630,11 @@ static errno_t prepare_child_argv(TALLOC_CTX *mem_ctx, } /* Save the current state in case an interrupt changes it */ - bool child_debug_to_file = debug_to_file; bool child_debug_timestamps = debug_timestamps; bool child_debug_microseconds = debug_microseconds; - bool child_debug_stderr = debug_to_stderr; if (!extra_args_only) { - if (child_debug_to_file) argc++; - if (child_debug_stderr) argc++; + argc++; } if (extra_argv) { @@ -675,17 +672,16 @@ static errno_t prepare_child_argv(TALLOC_CTX *mem_ctx, goto fail; } - if (child_debug_stderr) { - argv[--argc] = talloc_strdup(argv, "--logger=stderr"); + if (sss_logger == FILES_LOGGER) { + argv[--argc] = talloc_asprintf(argv, "--debug-fd=%d", + child_debug_fd); if (argv[argc] == NULL) { ret = ENOMEM; goto fail; } - } - - if (child_debug_to_file) { - argv[--argc] = talloc_asprintf(argv, "--debug-fd=%d", - child_debug_fd); + } else { + argv[--argc] = talloc_asprintf(argv, "--logger=%s", + sss_logger_str[sss_logger]); if (argv[argc] == NULL) { ret = ENOMEM; goto fail; @@ -816,7 +812,7 @@ errno_t child_debug_init(const char *logfile, int *debug_fd) return EOK; } - if (debug_to_file != 0 && *debug_fd == -1) { + if (sss_logger == FILES_LOGGER && *debug_fd == -1) { ret = open_debug_file_ex(logfile, &debug_filep, false); if (ret != EOK) { DEBUG(SSSDBG_FATAL_FAILURE, "Error setting up logging (%d) [%s]\n",
_______________________________________________ sssd-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
