summaryrefslogtreecommitdiff
path: root/server/responder
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2009-08-03 11:55:36 +0200
committerStephen Gallagher <sgallagh@redhat.com>2009-08-11 12:29:35 -0400
commitdd8aaf74198c084fd0aa712d56c4511978f04ebe (patch)
tree32b5b07a2781ffe2381265f3ffeb8202cd216e91 /server/responder
parentb3b55f167063417c285524ba35bd9298965b834a (diff)
downloadsssd-dd8aaf74198c084fd0aa712d56c4511978f04ebe.tar.gz
sssd-dd8aaf74198c084fd0aa712d56c4511978f04ebe.tar.bz2
sssd-dd8aaf74198c084fd0aa712d56c4511978f04ebe.zip
Make child processes exit when parent dies
The child processes call prctl() and when their parent process is killed, they are sent SIGTERM using prctl. This is currently Linux-specific, for non-Linuxes, a similar effect is achieved by catching a set of common termination signals and sending SIGTERM to the process group.
Diffstat (limited to 'server/responder')
-rw-r--r--server/responder/nss/nsssrv.c6
-rw-r--r--server/responder/pam/pamsrv.c6
2 files changed, 12 insertions, 0 deletions
diff --git a/server/responder/nss/nsssrv.c b/server/responder/nss/nsssrv.c
index 248d5384..418e2f9f 100644
--- a/server/responder/nss/nsssrv.c
+++ b/server/responder/nss/nsssrv.c
@@ -365,6 +365,12 @@ int main(int argc, const char *argv[])
ret = server_setup("sssd[nss]", 0, NSS_SRV_CONFIG, &main_ctx);
if (ret != EOK) return 2;
+ ret = die_if_parent_died();
+ if (ret != EOK) {
+ /* This is not fatal, don't return */
+ DEBUG(2, ("Could not set up to exit when parent process does\n"));
+ }
+
ret = nss_process_init(main_ctx,
main_ctx->event_ctx,
main_ctx->confdb_ctx);
diff --git a/server/responder/pam/pamsrv.c b/server/responder/pam/pamsrv.c
index 92fa4aec..bff2f7cc 100644
--- a/server/responder/pam/pamsrv.c
+++ b/server/responder/pam/pamsrv.c
@@ -227,6 +227,12 @@ int main(int argc, const char *argv[])
ret = server_setup("sssd[pam]", 0, PAM_SRV_CONFIG, &main_ctx);
if (ret != EOK) return 2;
+ ret = die_if_parent_died();
+ if (ret != EOK) {
+ /* This is not fatal, don't return */
+ DEBUG(2, ("Could not set up to exit when parent process does\n"));
+ }
+
pam_dp_interface = get_pam_dp_interface();
sss_cmds = register_sss_cmds();
ret = sss_process_init(main_ctx,