Browse Source

[Fix] Fix reload logic

pull/3067/head
Vsevolod Stakhov 6 years ago
parent
commit
1880656d8c
  1. 28
      src/rspamd.c

28
src/rspamd.c

@ -275,7 +275,7 @@ config_logger (rspamd_mempool_t *pool, gpointer ud)
rspamd_logger_configure_modules (rspamd_main->cfg->debug_modules);
}
static void
static gboolean
reread_config (struct rspamd_main *rspamd_main)
{
struct rspamd_config *tmp_cfg, *old_cfg;
@ -307,6 +307,8 @@ reread_config (struct rspamd_main *rspamd_main)
rspamd_main->workers_gid);
msg_err_main ("cannot parse new config file, revert to old one");
REF_RELEASE (tmp_cfg);
return FALSE;
}
else {
msg_info_main ("replacing config");
@ -326,6 +328,8 @@ reread_config (struct rspamd_main *rspamd_main)
load_opts|RSPAMD_CONFIG_INIT_POST_LOAD_LUA|RSPAMD_CONFIG_INIT_PRELOAD_MAPS);
msg_info_main ("config has been reread successfully");
}
return TRUE;
}
struct waiting_worker {
@ -1012,15 +1016,19 @@ rspamd_hup_handler (struct ev_loop *loop, ev_signal *w, int revents)
if (!rspamd_main->wanna_die) {
msg_info_main ("rspamd "
RVERSION
" is restarting");
g_hash_table_foreach (rspamd_main->workers, kill_old_workers, NULL);
rspamd_log_close_priv (rspamd_main->logger,
FALSE,
rspamd_main->workers_uid,
rspamd_main->workers_gid);
reread_config (rspamd_main);
rspamd_check_core_limits (rspamd_main);
spawn_workers (rspamd_main, rspamd_main->event_loop);
" is requested to reload configuration");
if (reread_config (rspamd_main)) {
msg_info_main ("kill old workers");
g_hash_table_foreach (rspamd_main->workers, kill_old_workers, NULL);
rspamd_log_close_priv (rspamd_main->logger,
FALSE,
rspamd_main->workers_uid,
rspamd_main->workers_gid);
rspamd_check_core_limits (rspamd_main);
msg_info_main ("spawn workers with a new config");
spawn_workers (rspamd_main, rspamd_main->event_loop);
}
}
}

Loading…
Cancel
Save