aboutsummaryrefslogtreecommitdiffstats
path: root/src/rspamd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rspamd.c')
-rw-r--r--src/rspamd.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/rspamd.c b/src/rspamd.c
index dafd9aebe..ba1ea1fb8 100644
--- a/src/rspamd.c
+++ b/src/rspamd.c
@@ -1155,6 +1155,18 @@ rspamd_hup_handler(struct ev_loop *loop, ev_signal *w, int revents)
msg_info_main("spawn workers with a new config");
spawn_workers(rspamd_main, rspamd_main->event_loop);
msg_info_main("workers spawning has been finished");
+
+ /* Notify all workers that spawning is complete */
+ {
+ struct rspamd_control_command wcmd;
+ memset(&wcmd, 0, sizeof(wcmd));
+ wcmd.type = RSPAMD_CONTROL_WORKERS_SPAWNED;
+ wcmd.cmd.workers_spawned.workers_count = g_hash_table_size(rspamd_main->workers);
+ rspamd_control_broadcast_srv_cmd(rspamd_main, &wcmd, 0);
+ msg_info_main("notified workers that spawning is complete after reload (%d workers)",
+ wcmd.cmd.workers_spawned.workers_count);
+ }
+
/* Kill marked */
msg_info_main("kill old workers");
g_hash_table_foreach(rspamd_main->workers, kill_old_workers, NULL);
@@ -1687,6 +1699,17 @@ int main(int argc, char **argv, char **env)
spawn_workers(rspamd_main, event_loop);
rspamd_mempool_unlock_mutex(rspamd_main->start_mtx);
+ /* Notify all workers that spawning is complete */
+ {
+ struct rspamd_control_command wcmd;
+ memset(&wcmd, 0, sizeof(wcmd));
+ wcmd.type = RSPAMD_CONTROL_WORKERS_SPAWNED;
+ wcmd.cmd.workers_spawned.workers_count = g_hash_table_size(rspamd_main->workers);
+ rspamd_control_broadcast_srv_cmd(rspamd_main, &wcmd, 0);
+ msg_info_main("notified workers that spawning is complete (%d workers)",
+ wcmd.cmd.workers_spawned.workers_count);
+ }
+
rspamd_main->http_ctx = rspamd_http_context_create(rspamd_main->cfg,
event_loop, rspamd_main->cfg->ups_ctx);