]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Configwizard: Fix usage when the config is wrong
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 24 Aug 2021 14:25:02 +0000 (15:25 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 24 Aug 2021 14:25:02 +0000 (15:25 +0100)
lualib/rspamadm/configwizard.lua
src/lua/lua_config.c

index bd7cd37c0fd9b7981f1963021842d937f0904dd8..7c2d67cb529af65c18064fd299a4d201019f1706 100644 (file)
@@ -696,7 +696,6 @@ return {
     local args = opts['checks'] or {}
 
     local _r,err = rspamd_config:load_ucl(opts['config'])
-    local cfg = rspamd_config:get_ucl()
 
     if not _r then
       rspamd_logger.errx('cannot parse %s: %s', opts['config'], err)
@@ -709,6 +708,8 @@ return {
       os.exit(1)
     end
 
+    local cfg = rspamd_config:get_ucl()
+
     if not rspamd_config:init_modules() then
       rspamd_logger.errx('cannot init modules when parsing %s', opts['config'])
       os.exit(1)
index b0e2df6720f708b2f8c4ebc28cbe24bc86e1c4e1..c6660852a0d62d48b0d302f36edd1d4d3b9ef8e6 100644 (file)
@@ -1092,13 +1092,18 @@ lua_config_get_ucl (lua_State * L)
                        lua_rawgeti (L, LUA_REGISTRYINDEX, cached->ref);
                }
                else {
-                       ucl_object_push_lua (L, cfg->rcl_obj, true);
-                       lua_pushvalue (L, -1);
-                       cached = rspamd_mempool_alloc (cfg->cfg_pool, sizeof (*cached));
-                       cached->L = L;
-                       cached->ref = luaL_ref (L, LUA_REGISTRYINDEX);
-                       rspamd_mempool_set_variable (cfg->cfg_pool, "ucl_cached",
-                                       cached, lua_config_ucl_dtor);
+                       if (cfg->rcl_obj) {
+                               ucl_object_push_lua(L, cfg->rcl_obj, true);
+                               lua_pushvalue(L, -1);
+                               cached = rspamd_mempool_alloc (cfg->cfg_pool, sizeof(*cached));
+                               cached->L = L;
+                               cached->ref = luaL_ref(L, LUA_REGISTRYINDEX);
+                               rspamd_mempool_set_variable(cfg->cfg_pool, "ucl_cached",
+                                               cached, lua_config_ucl_dtor);
+                       }
+                       else {
+                               lua_pushnil (L);
+                       }
                }
        }
        else {