diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-03-15 18:00:35 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-03-15 18:00:35 +0000 |
commit | e417edfa97e80946b3fadbd5b7da3420b287d76a (patch) | |
tree | 88623e5f1793c859fa98188c6384d40754c7dfcb /src/libserver/cfg_utils.c | |
parent | 73292700854365e6a43b78adc0dcd36ee88301c2 (diff) | |
download | rspamd-e417edfa97e80946b3fadbd5b7da3420b287d76a.tar.gz rspamd-e417edfa97e80946b3fadbd5b7da3420b287d76a.zip |
[Feature] Add lua rules squeezing
Diffstat (limited to 'src/libserver/cfg_utils.c')
-rw-r--r-- | src/libserver/cfg_utils.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c index c042c5eb2..10503dc21 100644 --- a/src/libserver/cfg_utils.c +++ b/src/libserver/cfg_utils.c @@ -753,6 +753,27 @@ rspamd_config_post_load (struct rspamd_config *cfg, } if (opts & RSPAMD_CONFIG_INIT_SYMCACHE) { + lua_State *L = cfg->lua_state; + int err_idx; + + /* Process squeezed Lua rules */ + lua_pushcfunction (L, &rspamd_lua_traceback); + err_idx = lua_gettop (L); + + if (rspamd_lua_require_function (cfg->lua_state, "lua_squeeze_rules", + "squeeze_init")) { + if (lua_pcall (L, 0, 0, err_idx) != 0) { + GString *tb = lua_touserdata (L, -1); + msg_err_config ("call to squeeze_init script failed: %v", tb); + + if (tb) { + g_string_free (tb, TRUE); + } + } + } + + lua_settop (L, err_idx - 1); + /* Init config cache */ rspamd_symbols_cache_init (cfg->cache); |