]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Block control signals on start
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 9 Feb 2021 15:03:12 +0000 (15:03 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 9 Feb 2021 15:03:34 +0000 (15:03 +0000)
src/rspamd.c

index e1b69fccd7af479976cb239ddc00e0977f69cf3f..4f035324d45b194c12632fc673dc3f8005e71310 100644 (file)
@@ -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;