From 2f71b647f48592ced0811ec66907068a3e236d6a Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 1 Jan 2009 18:51:17 +0100 Subject: sig_handlers: use event_pipe for delivering SIGHUP The signal_check library went out of order when we started using the GLib main loop. Convert the SIGHUP handler to use event_pipe instead. --- src/sig_handlers.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'src/sig_handlers.c') 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 @@ -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); } -- cgit v1.2.3