]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Avoid global wanna_die flag
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 25 Aug 2016 10:38:56 +0000 (11:38 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 25 Aug 2016 10:38:56 +0000 (11:38 +0100)
src/libserver/worker_util.c
src/rspamd.h

index 2a0a76d0498a36dcfd89bdeb98a450ed3c03f83b..98da2ce9a00e8500e2f8618482a7f0d5c861b6f9 100644 (file)
@@ -87,8 +87,6 @@ rspamd_get_worker_by_type (struct rspamd_config *cfg, GQuark type)
        return NULL;
 }
 
-sig_atomic_t wanna_die = 0;
-
 static void
 rspamd_worker_terminate_handlers (struct rspamd_worker *w)
 {
@@ -109,10 +107,10 @@ rspamd_worker_usr2_handler (struct rspamd_worker_signal_handler *sigh, void *arg
        /* Do not accept new connections, preparing to end worker's process */
        struct timeval tv;
 
-       if (!wanna_die) {
+       if (!sigh->worker->wanna_die) {
                tv.tv_sec = SOFT_SHUTDOWN_TIME;
                tv.tv_usec = 0;
-               wanna_die = 1;
+               sigh->worker->wanna_die = TRUE;
                rspamd_worker_terminate_handlers (sigh->worker);
                rspamd_default_log_function (G_LOG_LEVEL_INFO,
                                sigh->worker->srv->server_pool->tag.tagname,
@@ -139,7 +137,7 @@ rspamd_worker_term_handler (struct rspamd_worker_signal_handler *sigh, void *arg
 {
        struct timeval tv;
 
-       if (!wanna_die) {
+       if (!sigh->worker->wanna_die) {
                rspamd_default_log_function (G_LOG_LEVEL_INFO,
                                sigh->worker->srv->server_pool->tag.tagname,
                                sigh->worker->srv->server_pool->tag.uid,
@@ -147,7 +145,7 @@ rspamd_worker_term_handler (struct rspamd_worker_signal_handler *sigh, void *arg
                                "terminating after receiving signal %s",
                                g_strsignal (sigh->signo));
                rspamd_worker_terminate_handlers (sigh->worker);
-               wanna_die = 1;
+               sigh->worker->wanna_die = 1;
                tv.tv_sec = 0;
                tv.tv_usec = 0;
 
index 999061a99960cdfd4b721e3f678ff0de3a1c678a..e99e4c18dcb0beeb098cf4f6d41c79dcb21b60b8 100644 (file)
@@ -49,6 +49,7 @@ struct rspamd_worker {
        pid_t pid;                      /**< pid of worker                                                                      */
        guint index;                    /**< index number                                                                       */
        guint nconns;                   /**< current connections count                                          */
+       gboolean wanna_die;             /**< worker is terminating                                                      */
        gdouble start_time;             /**< start time                                                                         */
        struct rspamd_main *srv;        /**< pointer to server structure                                        */
        GQuark type;                    /**< process type                                                                       */