From 9c3cbc9496168ad8fa42ad5004601b6ffd7cc142 Mon Sep 17 00:00:00 2001 From: Mark Eichin Date: Tue, 1 Nov 1994 23:24:08 +0000 Subject: [PATCH] * adm_listen.c (kill_children): use sigprocmask if available git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4605 dc483132-0cff-0310-8789-dd5450dbe970 --- src/kadmin/server/ChangeLog | 4 ++++ src/kadmin/server/adm_listen.c | 42 ++++++++++++++++++++++++++-------- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/kadmin/server/ChangeLog b/src/kadmin/server/ChangeLog index 7ca21a302..9b65ef731 100644 --- a/src/kadmin/server/ChangeLog +++ b/src/kadmin/server/ChangeLog @@ -1,3 +1,7 @@ +Tue Nov 1 18:19:36 1994 Mark Eichin (eichin@cygnus.com) + + * adm_listen.c (kill_children): use sigprocmask if available. + Wed Oct 19 17:40:22 1994 Theodore Y. Ts'o (tytso@dcl) * adm_server.c (main): Select the cryptosystem to be used using diff --git a/src/kadmin/server/adm_listen.c b/src/kadmin/server/adm_listen.c index d5ef808e8..1a1ef5dfd 100644 --- a/src/kadmin/server/adm_listen.c +++ b/src/kadmin/server/adm_listen.c @@ -35,15 +35,6 @@ #include #include -#ifdef USE_SIGPROCMASK -/* fake sigmask, sigblock, sigsetmask */ -#include -#define sigmask(x) (1L<<(x)-1) -#define sigsetmask(x) sigprocmask(SIG_SETMASK,&x,NULL) -static int _fake_sigstore; -#define sigblock(x) (_fake_sigstore=x,sigprocmask(SIG_BLOCK,&_fake_sigstore,0)) -#endif - #ifndef sigmask #define sigmask(m) (1 <<((m)-1)) #endif @@ -58,6 +49,38 @@ static int _fake_sigstore; int adm_debug_flag = 0; +#ifdef USE_SIGPROCMASK +/* just do it right */ +void +kill_children() +{ + int i; + sigset_t old, new; + + sigemptyset(&old); + sigemptyset(&new); + sigaddset(&new,SIGCHLD); + sigprocmask(SIG_BLOCK, &new, &old); + + for (i = 0; i < pidarraysize; i++) { + kill(pidarray[i], SIGINT); + krb_log("killing child %d", pidarray[i]); + } + + sigprocmask(SIG_SETMASK, &old, NULL); +} + +#else + +#ifdef USE_SIGPROCMASK +/* fake sigmask, sigblock, sigsetmask */ +#include +#define sigmask(x) (1L<<(x)-1) +#define sigsetmask(x) sigprocmask(SIG_SETMASK,&x,NULL) +static int _fake_sigstore; +#define sigblock(x) (_fake_sigstore=x,sigprocmask(SIG_BLOCK,&_fake_sigstore,0)) +#endif + void kill_children() { @@ -74,6 +97,7 @@ kill_children() sigsetmask(osigmask); return; } +#endif /* HAVE_SIGSET */ /* adm5_listen_and_process - listen on the admin servers port for a request -- 2.26.2