commit 61c2a3c: [Fix] Initialize lua debugging earlier
Vsevolod Stakhov
vsevolod at highsecure.ru
Tue Apr 2 08:14:04 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-04-02 09:12:17 +0100
URL: https://github.com/rspamd/rspamd/commit/61c2a3c1e4ef7291130c8f6ea45d0b72e4b86d22 (HEAD -> master)
[Fix] Initialize lua debugging earlier
---
lualib/lua_util.lua | 9 +++++----
src/libserver/cfg_rcl.c | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 40 insertions(+), 4 deletions(-)
diff --git a/lualib/lua_util.lua b/lualib/lua_util.lua
index a6a99f2b6..4f185ecab 100644
--- a/lualib/lua_util.lua
+++ b/lualib/lua_util.lua
@@ -830,10 +830,11 @@ local debug_modules = {}
local debug_aliases = {}
local log_level = 384 -- debug + forced (1 << 7 | 1 << 8)
-if type(rspamd_config) == 'userdata' then
+
+exports.init_debug_logging = function(config)
local logger = require "rspamd_logger"
-- Fill debug modules from the config
- local logging = rspamd_config:get_all_opt('logging')
+ local logging = config:get_all_opt('logging')
if logging then
local log_level_str = logging.level
if log_level_str then
@@ -846,7 +847,7 @@ if type(rspamd_config) == 'userdata' then
if logging.debug_modules then
for _,m in ipairs(logging.debug_modules) do
debug_modules[m] = true
- logger.infox(rspamd_config, 'enable debug for Lua module %s', m)
+ logger.infox(config, 'enable debug for Lua module %s', m)
end
end
@@ -854,7 +855,7 @@ if type(rspamd_config) == 'userdata' then
for alias,mod in pairs(debug_aliases) do
if debug_modules[mod] then
debug_modules[alias] = true
- logger.infox(rspamd_config, 'enable debug for Lua module %s (%s aliased)',
+ logger.infox(config, 'enable debug for Lua module %s (%s aliased)',
alias, mod)
end
end
diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c
index ed99ef8b6..a9f957183 100644
--- a/src/libserver/cfg_rcl.c
+++ b/src/libserver/cfg_rcl.c
@@ -3796,6 +3796,41 @@ rspamd_config_read (struct rspamd_config *cfg,
} else {
logger_fin (cfg->cfg_pool, logger_ud);
}
+
+ /* Init lua logging */
+ lua_State *L = cfg->lua_state;
+ gint err_idx;
+ struct rspamd_config **pcfg;
+
+ lua_pushcfunction (L, &rspamd_lua_traceback);
+ err_idx = lua_gettop (L);
+
+ /* Obtain function */
+ if (!rspamd_lua_require_function (L, "lua_util",
+ "init_debug_logging")) {
+ msg_err_config ("cannot require lua_util.init_debug_logging");
+ lua_settop (L, err_idx - 1);
+
+ return FALSE;
+ }
+
+ pcfg = lua_newuserdata (L, sizeof (*pcfg));
+ *pcfg = cfg;
+ rspamd_lua_setclass (L, "rspamd{config}", -1);
+
+ if (lua_pcall (L, 1, 0, err_idx) != 0) {
+ GString *tb;
+
+ tb = lua_touserdata (L, -1);
+ msg_err_config ("cannot call lua init_debug_logging script: %s",
+ tb->str);
+ g_string_free (tb, TRUE);
+ lua_settop (L, err_idx - 1);
+
+ return FALSE;
+ }
+
+ lua_settop (L, err_idx - 1);
}
HASH_DEL (top, logger_section);
More information about the Commits
mailing list