commit ab3d1bc: [Rework] Rework config reload
Vsevolod Stakhov
vsevolod at highsecure.ru
Wed Aug 7 18:56:05 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-08-07 19:35:46 +0100
URL: https://github.com/rspamd/rspamd/commit/ab3d1bc569698cef8c808b46ace802303dee2de9
[Rework] Rework config reload
---
src/rspamd.c | 39 +++++++++++++++++++++++++--------------
1 file changed, 25 insertions(+), 14 deletions(-)
diff --git a/src/rspamd.c b/src/rspamd.c
index 4d7fbf895..2dc50c5d5 100644
--- a/src/rspamd.c
+++ b/src/rspamd.c
@@ -277,6 +277,8 @@ reread_config (struct rspamd_main *rspamd_main)
{
struct rspamd_config *tmp_cfg, *old_cfg;
gchar *cfg_file;
+ int load_opts = RSPAMD_CONFIG_INIT_VALIDATE|RSPAMD_CONFIG_INIT_SYMCACHE|
+ RSPAMD_CONFIG_INIT_LIBS|RSPAMD_CONFIG_INIT_URL;
rspamd_symcache_save (rspamd_main->cfg->cache);
tmp_cfg = rspamd_config_new (RSPAMD_CONFIG_INIT_DEFAULT);
@@ -289,10 +291,7 @@ reread_config (struct rspamd_main *rspamd_main)
old_cfg = rspamd_main->cfg;
rspamd_main->cfg = tmp_cfg;
- if (!load_rspamd_config (rspamd_main, tmp_cfg, TRUE,
- RSPAMD_CONFIG_INIT_VALIDATE|RSPAMD_CONFIG_INIT_SYMCACHE|
- RSPAMD_CONFIG_INIT_LIBS|RSPAMD_CONFIG_INIT_URL,
- TRUE)) {
+ if (!load_rspamd_config (rspamd_main, tmp_cfg, TRUE, load_opts, TRUE)) {
rspamd_main->cfg = old_cfg;
rspamd_log_close_priv (rspamd_main->logger,
FALSE,
@@ -309,6 +308,16 @@ reread_config (struct rspamd_main *rspamd_main)
else {
msg_info_main ("replacing config");
REF_RELEASE (old_cfg);
+ /* Here, we can do post actions with the existing config */
+ /*
+ * As some rules are defined in lua, we need to process them, then init
+ * modules and merely afterwards to init modules
+ */
+ rspamd_lua_post_load_config (tmp_cfg);
+ rspamd_init_filters (tmp_cfg, TRUE);
+
+ /* Do post-load actions */
+ rspamd_config_post_load (tmp_cfg, load_opts);
msg_info_main ("config has been reread successfully");
rspamd_map_preload (rspamd_main->cfg);
@@ -871,19 +880,21 @@ load_rspamd_config (struct rspamd_main *rspamd_main,
}
}
- /*
- * As some rules are defined in lua, we need to process them, then init
- * modules and merely afterwards to init modules
- */
- rspamd_lua_post_load_config (cfg);
+ if (!reload) {
+ /*
+ * As some rules are defined in lua, we need to process them, then init
+ * modules and merely afterwards to init modules
+ */
+ rspamd_lua_post_load_config (cfg);
+
+ if (init_modules) {
+ rspamd_init_filters (cfg, reload);
+ }
- if (init_modules) {
- rspamd_init_filters (cfg, reload);
+ /* Do post-load actions */
+ rspamd_config_post_load (cfg, opts);
}
- /* Do post-load actions */
- rspamd_config_post_load (cfg, opts);
-
return TRUE;
}
More information about the Commits
mailing list