diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2014-04-22 15:33:47 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2014-04-22 15:33:47 +0100 |
commit | 6120d294026b01790b633ead0908ca4a8c7aeb65 (patch) | |
tree | 29654b837bd9226204c690d2c1317b4338b87778 /src/controller.c | |
parent | 630ceb658d8a0ab0804280fb900553e58f3af3c0 (diff) | |
download | rspamd-6120d294026b01790b633ead0908ca4a8c7aeb65.tar.gz rspamd-6120d294026b01790b633ead0908ca4a8c7aeb65.zip |
Use unified signal handlers.
Diffstat (limited to 'src/controller.c')
-rw-r--r-- | src/controller.c | 69 |
1 files changed, 1 insertions, 68 deletions
diff --git a/src/controller.c b/src/controller.c index 0c2a8b25f..4665e4718 100644 --- a/src/controller.c +++ b/src/controller.c @@ -133,65 +133,9 @@ static GList *custom_commands = NULL; static time_t start_time; static gchar greetingbuf[1024]; -static sig_atomic_t wanna_die = 0; static gboolean controller_write_socket (void *arg); -#ifndef HAVE_SA_SIGINFO -static void -sig_handler (gint signo) -#else -static void -sig_handler (gint signo, siginfo_t *info, void *unused) -#endif -{ - struct timeval tv; - switch (signo) { - case SIGINT: - case SIGTERM: - if (!wanna_die) { - wanna_die = 1; - tv.tv_sec = 0; - tv.tv_usec = 0; - event_loopexit (&tv); - -#ifdef WITH_GPERF_TOOLS - ProfilerStop (); -#endif - } - break; - } -} - -static void -sigusr2_handler (gint fd, short what, void *arg) -{ - struct rspamd_worker *worker = (struct rspamd_worker *)arg; - /* Do not accept new connections, preparing to end worker's process */ - struct timeval tv; - tv.tv_sec = 2; - tv.tv_usec = 0; - event_del (&worker->sig_ev_usr1); - event_del (&worker->sig_ev_usr2); - worker_stop_accept (worker); - msg_info ("controller's shutdown is pending in %d sec", 2); - event_loopexit (&tv); - return; -} - -/* - * Reopen log is designed by sending sigusr1 to active workers and pending shutdown of them - */ -static void -sigusr1_handler (gint fd, short what, void *arg) -{ - struct rspamd_worker *worker = (struct rspamd_worker *) arg; - - reopen_log (worker->srv->logger); - - return; -} - static void free_session (void *ud) { @@ -1931,20 +1875,9 @@ start_controller (struct rspamd_worker *worker) GError *err = NULL; struct timeval tv; - ctx->ev_base = prepare_worker (worker, "controller", sig_handler, accept_socket); + ctx->ev_base = prepare_worker (worker, "controller", accept_socket); g_mime_init (0); - /* SIGUSR2 handler */ - signal_set (&worker->sig_ev_usr2, SIGUSR2, sigusr2_handler, (void *) worker); - event_base_set (ctx->ev_base, &worker->sig_ev_usr2); - signal_add (&worker->sig_ev_usr2, NULL); - - /* SIGUSR1 handler */ - signal_set (&worker->sig_ev_usr1, SIGUSR1, sigusr1_handler, (void *) worker); - event_base_set (ctx->ev_base, &worker->sig_ev_usr1); - signal_add (&worker->sig_ev_usr1, NULL); - - start_time = time (NULL); /* Start statfile synchronization */ |