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