diff options
-rw-r--r-- | lualib/lua_settings.lua | 10 | ||||
-rw-r--r-- | src/plugins/lua/settings.lua | 6 |
2 files changed, 11 insertions, 5 deletions
diff --git a/lualib/lua_settings.lua b/lualib/lua_settings.lua index e0fc58b9d..bf6826749 100644 --- a/lualib/lua_settings.lua +++ b/lualib/lua_settings.lua @@ -230,7 +230,7 @@ local function transform_settings_maybe(settings, name) return settings end -local function register_settings_id(str, settings) +local function register_settings_id(str, settings, from_postload) local numeric_id = numeric_settings_id(str) if known_ids[numeric_id] then @@ -252,8 +252,10 @@ local function register_settings_id(str, settings) } end - if not post_init_added then - rspamd_config:add_post_init(function () register_settings_cb(true) end) + if not from_postload and not post_init_added then + -- Use high priority to ensure that settings are initialised early but not before all + -- plugins are loaded + rspamd_config:add_post_init(function () register_settings_cb(true) end, 150) rspamd_config:add_config_unload(function() if post_init_added then known_ids = {} @@ -300,4 +302,6 @@ exports.default_symbols = function() return default_symbols end +exports.load_all_settings = register_settings_cb + return exports
\ No newline at end of file diff --git a/src/plugins/lua/settings.lua b/src/plugins/lua/settings.lua index 993d2a8e9..81b328b52 100644 --- a/src/plugins/lua/settings.lua +++ b/src/plugins/lua/settings.lua @@ -962,7 +962,8 @@ local function process_settings_table(tbl, allow_ids, mempool, is_static) end if elt['id'] then - out.id = lua_settings.register_settings_id(elt.id, out) + -- We are here from a postload script + out.id = lua_settings.register_settings_id(elt.id, out, true) lua_util.debugm(N, rspamd_config, 'added settings id to "%s": %s -> %s', name, elt.id, out.id) @@ -1033,6 +1034,7 @@ local function process_settings_table(tbl, allow_ids, mempool, is_static) end settings_initialized = true + lua_settings.load_all_settings(true) rspamd_logger.infox(rspamd_config, 'loaded %1 elements of settings', nrules) return true @@ -1215,7 +1217,7 @@ elseif set_section and type(set_section) == "table" then ) rspamd_config:add_post_init(function () process_settings_table(set_section, true, settings_map_pool, true) - end) + end, 100) end rspamd_config:add_config_unload(function() |