From: Vsevolod Stakhov Date: Thu, 25 Aug 2016 10:38:56 +0000 (+0100) Subject: [Minor] Avoid global wanna_die flag X-Git-Tag: 1.4.0~564 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6dd5ad342c865f057573e1510df113650bcfe570;p=thirdparty%2Frspamd.git [Minor] Avoid global wanna_die flag --- diff --git a/src/libserver/worker_util.c b/src/libserver/worker_util.c index 2a0a76d049..98da2ce9a0 100644 --- a/src/libserver/worker_util.c +++ b/src/libserver/worker_util.c @@ -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; diff --git a/src/rspamd.h b/src/rspamd.h index 999061a999..e99e4c18dc 100644 --- a/src/rspamd.h +++ b/src/rspamd.h @@ -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 */