diff options
Diffstat (limited to 'src/sig_handlers.c')
-rw-r--r-- | src/sig_handlers.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/sig_handlers.c b/src/sig_handlers.c index 5fefb82a0..660107200 100644 --- a/src/sig_handlers.c +++ b/src/sig_handlers.c @@ -18,10 +18,10 @@ */ #include "sig_handlers.h" -#include "command.h" #include "signal_check.h" #include "log.h" #include "main.h" +#include "event_pipe.h" #include <glib.h> @@ -34,6 +34,11 @@ static void exit_signal_handler(G_GNUC_UNUSED int signum) g_main_loop_quit(main_loop); } +static void reload_signal_handler(G_GNUC_UNUSED int signum) +{ + event_pipe_emit_fast(PIPE_EVENT_RELOAD); +} + static void x_sigaction(int signum, const struct sigaction *act) { @@ -41,16 +46,11 @@ x_sigaction(int signum, const struct sigaction *act) g_error("sigaction() failed: %s", strerror(errno)); } -int handlePendingSignals(void) +static void +handle_reload_event(void) { - if (signal_is_pending(SIGHUP)) { - DEBUG("got SIGHUP, rereading DB\n"); - signal_clear(SIGHUP); - if (cycle_log_files() < 0) - return COMMAND_RETURN_KILL; - } - - return 0; + DEBUG("got SIGHUP, rereading DB\n"); + cycle_log_files(); } void initSigHandlers(void) @@ -66,6 +66,9 @@ void initSigHandlers(void) x_sigaction(SIGINT, &sa); x_sigaction(SIGTERM, &sa); + event_pipe_register(PIPE_EVENT_RELOAD, handle_reload_event); + sa.sa_handler = reload_signal_handler; + x_sigaction(SIGHUP, &sa); + signal_handle(SIGUSR1); - signal_handle(SIGHUP); } |