]> source.dussan.org Git - rspamd.git/commitdiff
[Project] Fix some more issues
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 14 Jun 2019 18:29:14 +0000 (19:29 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 14 Jun 2019 18:29:14 +0000 (19:29 +0100)
lualib/lua_settings.lua
src/libserver/rspamd_symcache.c
src/lua/lua_config.c

index 5cd2fb8fa0026b69e499f83abf0126d6643a6ee6..f66db6a067475271eab8e0e1321a19c76f80e77b 100644 (file)
@@ -22,7 +22,7 @@ limitations under the License.
 
 local exports = {}
 local known_ids = {}
-local on_load_added = false
+local post_init_added = false
 
 local function register_settings_cb()
   for _,set in pairs(known_ids) do
@@ -116,9 +116,9 @@ local function register_settings_id(str, settings)
     }
   end
 
-  if not on_load_added then
-    rspamd_config:add_on_load(register_settings_cb)
-    on_load_added = true
+  if not post_init_added then
+    rspamd_config:add_post_init(register_settings_cb)
+    post_init_added = true
   end
 
   return numeric_id
index 25707b44788ea504604e437dbcaeabce33e3fc8d..d6377eff21b576de81333e502fc95f3a69a3d931 100644 (file)
@@ -1431,6 +1431,17 @@ rspamd_symcache_is_item_allowed (struct rspamd_task *task,
        if (!item->enabled ||
                (RSPAMD_TASK_IS_EMPTY (task) && !(item->type & SYMBOL_TYPE_EMPTY)) ||
                (item->type & SYMBOL_TYPE_MIME_ONLY && !RSPAMD_TASK_IS_MIME(task))) {
+
+               if (!item->enabled) {
+                       msg_debug_cache_task ("skipping check of %s as it is permanently disabled",
+                                       item->symbol);
+               }
+               else {
+                       msg_debug_cache_task ("skipping check of %s as it cannot be "
+                                                "executed for this task type",
+                                       item->symbol);
+               }
+
                return FALSE;
        }
 
@@ -1449,7 +1460,7 @@ rspamd_symcache_is_item_allowed (struct rspamd_task *task,
                }
 
                if (!(item->type & SYMBOL_TYPE_EXPLICIT_DISABLE)) {
-                       if (item->allowed_ids.st[0] != 0 &&
+                       if (item->allowed_ids.st[0] == 0 ||
                                !rspamd_symcache_check_id_list (&item->allowed_ids,
                                                id)) {
                                msg_debug_cache_task ("deny execution of %s as it is not listed "
@@ -1515,7 +1526,6 @@ rspamd_symcache_check_symbol (struct rspamd_task *task,
        SET_START_BIT (checkpoint, dyn_item);
 
        if (!rspamd_symcache_is_item_allowed (task, item)) {
-               msg_debug_cache_task ("disable execution of symbol %s", item->symbol);
                check = FALSE;
        }
        else if (item->specific.normal.condition_cb != -1) {
@@ -1535,6 +1545,11 @@ rspamd_symcache_check_symbol (struct rspamd_task *task,
                        check = lua_toboolean (L, -1);
                        lua_pop (L, 1);
                }
+
+               if (!check) {
+                       msg_debug_cache_task ("skipping check of %s as its start condition is false",
+                                       item->symbol);
+               }
        }
 
        if (check) {
@@ -1570,8 +1585,6 @@ rspamd_symcache_check_symbol (struct rspamd_task *task,
                return FALSE;
        }
        else {
-               msg_debug_cache_task ("skipping check of %s as its start condition is false",
-                               item->symbol);
                SET_FINISH_BIT (checkpoint, dyn_item);
        }
 
@@ -3179,11 +3192,8 @@ rspamd_symcache_add_id_to_list (rspamd_mempool_t *pool,
                /* Static part */
                while (ls->st[cnt] != 0) {
                        cnt ++;
-
-                       g_assert (cnt < G_N_ELEMENTS (ls->st));
                }
 
-
                if (cnt < G_N_ELEMENTS (ls->st)) {
                        ls->st[cnt] = id;
                }
index 832e10614af7223cdb1f1f1a801369b87b05ff8f..537a44bb68e4056ac57f65f37ee943b9eaa1b885 100644 (file)
@@ -3327,7 +3327,7 @@ lua_config_get_group_symbols (lua_State *L)
 
                        while (g_hash_table_iter_next (&it, &k, &v)) {
                                lua_pushstring (L, k);
-                               lua_rawseti (L, -1, i);
+                               lua_rawseti (L, -2, i);
                                i ++;
                        }
                }