quark

quark web server
git clone git://git.suckless.org/quark
Log | Files | Refs | LICENSE

commit a345c63a597f5db618bf79c23ca4e6277eeab33e
parent 92b8bc27da21394c78a9cb36cf0c11f7b2a782d8
Author: FRIGN <dev@frign.de>
Date:   Thu,  7 Aug 2014 17:24:39 +0200

Refactor sighandler

You can't handle SIGKILL. Given we have control over which
signals are passed to the sighandler, it's enough to catch SIGCHLD
and do standard behaviour than building a big switch for that.

Diffstat:
Mquark.c | 15+++------------
1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/quark.c b/quark.c @@ -459,20 +459,12 @@ serve(int fd) { void sighandler(int sig) { - switch(sig) { - default: break; - case SIGHUP: - case SIGINT: - case SIGQUIT: - case SIGABRT: - case SIGTERM: + if (sig == SIGCHLD) { + while(0 < waitpid(-1, NULL, WNOHANG)); + } else { logerrmsg("received signal: %s, closing down\n", strsignal(sig)); close(fd); running = 0; - break; - case SIGCHLD: - while(0 < waitpid(-1, NULL, WNOHANG)); - break; } } @@ -514,7 +506,6 @@ main(int argc, char *argv[]) { signal(SIGQUIT, sighandler); signal(SIGABRT, sighandler); signal(SIGTERM, sighandler); - signal(SIGKILL, sighandler); /* init */ setbuf(stdout, NULL); /* unbuffered stdout */