diff --git a/inc/utils.h b/inc/utils.h index 8c45696..a18e6bb 100644 --- a/inc/utils.h +++ b/inc/utils.h @@ -7,6 +7,7 @@ typedef struct _code { static void signal_handler_general(int sig_num); static void signal_handler_up(int sig_num); +void set_sig_handler(); void skeleton_daemon(); int init_pid(char *pidfile_path); int write_pid(char *pidfile_path); diff --git a/src/cmd/uts-server.c b/src/cmd/uts-server.c index 7d5db70..7e75c24 100644 --- a/src/cmd/uts-server.c +++ b/src/cmd/uts-server.c @@ -101,6 +101,8 @@ int main(int argc, char **argv) { if (args.daemonize) skeleton_daemon(); + else + set_sig_handler(); syslog(LOG_NOTICE, "uts-server daemon starting with conf '%s' from working dir '%s'", diff --git a/src/lib/utils.c b/src/lib/utils.c index 90e06cb..2657894 100644 --- a/src/lib/utils.c +++ b/src/lib/utils.c @@ -67,6 +67,17 @@ int write_pid(char *pidfile_path) { return 1; } +void set_sig_handler() { + g_uts_sig_up = 0; + g_uts_sig = 0; + /* Catch, ignore and handle signals */ + // TODO: Implement a working signal handler */ + signal(SIGTERM, signal_handler_general); + signal(SIGINT, signal_handler_general); + signal(SIGHUP, signal_handler_up); + signal(SIGCHLD, SIG_IGN); +} + void skeleton_daemon() { pid_t pid; @@ -85,14 +96,7 @@ void skeleton_daemon() { if (setsid() < 0) exit(EXIT_FAILURE); - g_uts_sig_up = 0; - g_uts_sig = 0; - /* Catch, ignore and handle signals */ - // TODO: Implement a working signal handler */ - signal(SIGTERM, signal_handler_general); - signal(SIGINT, signal_handler_general); - signal(SIGHUP, signal_handler_up); - signal(SIGCHLD, SIG_IGN); + set_sig_handler(); /* Fork off for the second time*/ pid = fork();