diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2021-02-09 15:03:12 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2021-02-09 15:03:34 +0000 |
commit | 10a141583005c5394e00b267cce7d6b7585d7c8e (patch) | |
tree | 4e620fb2e6b685e5107c266a18678e8535531683 /src | |
parent | edbb60ec54e6b8cee986b2aa5bdaaac76e273da5 (diff) | |
download | rspamd-10a141583005c5394e00b267cce7d6b7585d7c8e.tar.gz rspamd-10a141583005c5394e00b267cce7d6b7585d7c8e.zip |
[Minor] Block control signals on start
Diffstat (limited to 'src')
-rw-r--r-- | src/rspamd.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/rspamd.c b/src/rspamd.c index e1b69fccd..4f035324d 100644 --- a/src/rspamd.c +++ b/src/rspamd.c @@ -1334,6 +1334,14 @@ main (gint argc, gchar **argv, gchar **env) struct ev_loop *event_loop; struct rspamd_main *rspamd_main; gboolean skip_pid = FALSE; + sigset_t control_signals; + + /* Block special signals on loading */ + sigemptyset (&control_signals); + sigaddset (&control_signals, SIGHUP); + sigaddset (&control_signals, SIGUSR1); + sigaddset (&control_signals, SIGUSR2); + sigprocmask (SIG_BLOCK, &control_signals, NULL); rspamd_main = (struct rspamd_main *) g_malloc0 (sizeof (struct rspamd_main)); @@ -1499,7 +1507,6 @@ main (gint argc, gchar **argv, gchar **env) exit (-errno); } - /* Block signals to use sigsuspend in future */ sigprocmask (SIG_BLOCK, &signals.sa_mask, NULL); /* Set title */ @@ -1531,9 +1538,11 @@ main (gint argc, gchar **argv, gchar **env) rspamd_main->cfg->history_file); } - /* Spawn workers */ + /* Init workers hash */ rspamd_main->workers = g_hash_table_new (g_direct_hash, g_direct_equal); + /* Unblock control signals */ + sigprocmask (SIG_UNBLOCK, &control_signals, NULL); /* Init event base */ event_loop = ev_default_loop (rspamd_config_ev_backend_get (rspamd_main->cfg)); rspamd_main->event_loop = event_loop; |