1 /*
2  * signals.c
3  * (C)1999-2011 by Marc Huber <Marc.Huber@web.de>
4  *
5  * $Id: signals.c,v 1.10 2015/03/14 06:11:27 marc Exp marc $
6  *
7  */
8 
9 #include "headers.h"
10 #include <signal.h>
11 #include <sysexits.h>
12 
13 static const char rcsid[] __attribute__ ((used)) = "$Id: signals.c,v 1.10 2015/03/14 06:11:27 marc Exp marc $";
14 
15 static sigset_t master_set;
16 
catchhup(int i)17 void catchhup(int i __attribute__ ((unused)))
18 {
19     signal(SIGHUP, SIG_IGN);
20     signal(SIGTERM, SIG_IGN);
21 
22     cleanup(ctx_spawnd, 0);
23     die_when_idle = -1;
24     logmsg("SIGHUP: No longer accepting new connections.");
25 
26     set_proctitle(ACCEPT_NEVER);
27 }
28 
catchalrm(int i)29 void catchalrm(int i __attribute__ ((unused)))
30 {
31 }
32 
setup_signals()33 void setup_signals()
34 {
35     signal(SIGPIPE, SIG_IGN);
36     signal(SIGCHLD, SIG_IGN);
37     signal(SIGHUP, catchhup);
38     signal(SIGTERM, catchhup);
39     signal(SIGALRM, catchalrm);
40     sigfillset(&master_set);
41     sigdelset(&master_set, SIGSEGV);
42     sigprocmask(SIG_SETMASK, &master_set, NULL);
43 }
44 
process_signals()45 void process_signals()
46 {
47     sigprocmask(SIG_UNBLOCK, &master_set, NULL);
48     sigprocmask(SIG_SETMASK, &master_set, NULL);
49 }
50