]> source.dussan.org Git - rspamd.git/commitdiff
Move more initialization to the common routines.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 17 Apr 2015 14:28:48 +0000 (15:28 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 17 Apr 2015 14:28:48 +0000 (15:28 +0100)
src/libserver/cfg_file.h
src/libserver/cfg_rcl.c
src/libserver/cfg_utils.c
src/main.c

index 25f19d2161aefe39ec1cfde999d59e73a909368c..e2543fea876f8526afc6334dc416107c6e7d4191 100644 (file)
@@ -395,6 +395,13 @@ void rspamd_ucl_add_conf_variables (struct ucl_parser *parser);
  */
 gboolean rspamd_init_filters (struct rspamd_config *cfg, bool reconfig);
 
+/**
+ * Init configuration file structure
+ * @param cfg
+ * @param init_lua
+ */
+void rspamd_init_cfg (struct rspamd_config *cfg, gboolean init_lua);
+
 #endif /* ifdef CFG_FILE_H */
 /*
  * vi:ts=4
index 19b920c69cc503b111ed96dc24c6c413ea904992..ad0ed8bc3f5a38a99359a67f4e1692028127e9ed 100644 (file)
@@ -2256,10 +2256,12 @@ rspamd_config_read (struct rspamd_config *cfg, const gchar *filename,
        top = rspamd_rcl_config_init ();
        err = NULL;
 
-       HASH_FIND_STR (top, "logging", logger);
-       if (logger != NULL) {
-               logger->fin = logger_fin;
-               logger->fin_ud = logger_ud;
+       if (logger_fin != NULL) {
+               HASH_FIND_STR (top, "logging", logger);
+               if (logger != NULL) {
+                       logger->fin = logger_fin;
+                       logger->fin_ud = logger_ud;
+               }
        }
 
        if (!rspamd_rcl_parse (top, cfg, cfg->cfg_pool, cfg->rcl_obj, &err)) {
index 28310da5736567a20c6ba94a2c83f394cee1cfbd..444ad9a115ca219a4e80742d318e2f45b5064ebe 100644 (file)
@@ -871,6 +871,25 @@ rspamd_init_filters (struct rspamd_config *cfg, bool reconfig)
        return rspamd_init_lua_filters (cfg);
 }
 
-/*
- * vi:ts=4
- */
+void
+rspamd_init_cfg (struct rspamd_config *cfg, gboolean init_lua)
+{
+       cfg->cfg_pool = rspamd_mempool_new (
+                       rspamd_mempool_suggest_size ());
+       rspamd_config_defaults (cfg);
+
+       if (init_lua) {
+               cfg->lua_state = rspamd_lua_init (cfg);
+               rspamd_mempool_add_destructor (cfg->cfg_pool,
+                               (rspamd_mempool_destruct_t)lua_close, cfg->lua_state);
+       }
+
+       /* Pre-init of cache */
+       cfg->cache = g_new0 (struct symbols_cache, 1);
+       cfg->cache->static_pool = rspamd_mempool_new (
+               rspamd_mempool_suggest_size ());
+       cfg->cache->cfg = cfg;
+       cfg->cache->items_by_symbol = g_hash_table_new (
+               rspamd_str_hash,
+               rspamd_str_equal);
+}
index 0b0a5628c277bc2e65ce88e43f9339d8341d4dc7..4d541c4e47fe5c531a347325a1444907eaeefb88 100644 (file)
@@ -60,7 +60,6 @@ static struct rspamd_worker * fork_worker (struct rspamd_main *,
 static gboolean load_rspamd_config (struct rspamd_config *cfg,
        gboolean init_modules);
 static void init_cfg_cache (struct rspamd_config *cfg);
-static void rspamd_init_cfg (struct rspamd_config *cfg);
 
 sig_atomic_t do_restart = 0;
 sig_atomic_t do_reopen_log = 0;
@@ -362,7 +361,8 @@ reread_config (struct rspamd_main *rspamd)
        tmp_cfg = (struct rspamd_config *)g_malloc0 (sizeof (struct rspamd_config));
        if (tmp_cfg) {
 
-               rspamd_init_cfg (tmp_cfg);
+               rspamd_init_cfg (tmp_cfg, FALSE);
+               tmp_cfg->lua_state = rspamd->cfg->lua_state;
                cfg_file = rspamd_mempool_strdup (tmp_cfg->cfg_pool,
                                rspamd->cfg->cfg_name);
                /* Save some variables */
@@ -1028,27 +1028,6 @@ perform_configs_sign (void)
 #endif
 }
 
-static void
-rspamd_init_cfg (struct rspamd_config *cfg)
-{
-       cfg->cfg_pool = rspamd_mempool_new (
-                       rspamd_mempool_suggest_size ());
-       rspamd_config_defaults (cfg);
-
-       cfg->lua_state = rspamd_lua_init (cfg);
-       rspamd_mempool_add_destructor (cfg->cfg_pool,
-               (rspamd_mempool_destruct_t)lua_close, cfg->lua_state);
-
-       /* Pre-init of cache */
-       cfg->cache = g_new0 (struct symbols_cache, 1);
-       cfg->cache->static_pool = rspamd_mempool_new (
-               rspamd_mempool_suggest_size ());
-       cfg->cache->cfg = cfg;
-       cfg->cache->items_by_symbol = g_hash_table_new (
-               rspamd_str_hash,
-               rspamd_str_equal);
-}
-
 static void
 rspamd_init_main (struct rspamd_main *rspamd)
 {
@@ -1094,7 +1073,7 @@ main (gint argc, gchar **argv, gchar **env)
 
        rspamd_init_libs ();
        rspamd_init_main (rspamd_main);
-       rspamd_init_cfg (rspamd_main->cfg);
+       rspamd_init_cfg (rspamd_main->cfg, TRUE);
 
        memset (&signals, 0, sizeof (struct sigaction));