diff options
Diffstat (limited to 'src/rspamd.c')
-rw-r--r-- | src/rspamd.c | 23 |
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); |