commit 329392cbac1459169669edcbf84405125ce4df08 from: Omar Polo date: Tue Jul 05 16:10:30 2022 UTC group the signal handling into the a single function commit - 2cb54b16c3944e5919e2112d339b73678fd0106d commit + 329392cbac1459169669edcbf84405125ce4df08 blob - a1f799769c83791ddf04e799be4969b44d44ca85 blob + 11d5d9f6ac719261e55c3c7d8b44fe4dc507eae1 --- lstun.c +++ lstun.c @@ -83,26 +83,28 @@ struct conn { } conns[MAXCONN]; static void -terminate(int fd, short event, void *data) +sig_handler(int sig, short event, void *data) { - event_loopbreak(); -} - -static void -chld(int fd, short event, void *data) -{ int status; - if (waitpid(ssh_pid, &status, WNOHANG) == -1) - fatal("waitpid"); - - ssh_pid = -1; -} - -static void -info(int fd, short event, void *data) -{ - log_info("connections: %d", conn); + switch (sig) { + case SIGHUP: + case SIGINT: + case SIGTERM: + event_loopbreak(); + break; + case SIGCHLD: + if (waitpid(ssh_pid, &status, WNOHANG) == -1) + fatal("waitpid"); + ssh_pid = -1; + break; +#ifdef SIGINFO + case SIGINFO: +#else + case SIGUSR1: +#endif + log_info("connections: %d", conn); + } } static void @@ -468,14 +470,14 @@ main(int argc, char **argv) /* initialize the timer */ evtimer_set(&timeoutev, killing_time, NULL); - signal_set(&sighupev, SIGHUP, terminate, NULL); - signal_set(&sigintev, SIGINT, terminate, NULL); - signal_set(&sigtermev, SIGTERM, terminate, NULL); - signal_set(&sigchldev, SIGCHLD, chld, NULL); + signal_set(&sighupev, SIGHUP, sig_handler, NULL); + signal_set(&sigintev, SIGINT, sig_handler, NULL); + signal_set(&sigtermev, SIGTERM, sig_handler, NULL); + signal_set(&sigchldev, SIGCHLD, sig_handler, NULL); #ifdef SIGINFO - signal_set(&siginfoev, SIGINFO, info, NULL); + signal_set(&siginfoev, SIGINFO, sig_handler, NULL); #else - signal_set(&siginfoev, SIGUSR1, info, NULL); + signal_set(&siginfoev, SIGUSR1, sig_handler, NULL); #endif signal_add(&sighupev, NULL);