diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-05-02 20:48:08 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-05-02 20:48:08 +0100 |
commit | 0967b2b78c5f1839097577dddcfc145522eef7b8 (patch) | |
tree | 7b7781379cea8d1c5e1bdddea9937511d154c1d1 /src/libserver/rspamd_symcache.c | |
parent | c1bd3f81f3fba86a22bb5ed95563b8370e07d111 (diff) | |
download | rspamd-0967b2b78c5f1839097577dddcfc145522eef7b8.tar.gz rspamd-0967b2b78c5f1839097577dddcfc145522eef7b8.zip |
[Minor] Store symcache item type
Diffstat (limited to 'src/libserver/rspamd_symcache.c')
-rw-r--r-- | src/libserver/rspamd_symcache.c | 61 |
1 files changed, 40 insertions, 21 deletions
diff --git a/src/libserver/rspamd_symcache.c b/src/libserver/rspamd_symcache.c index 597df113d..169b13e94 100644 --- a/src/libserver/rspamd_symcache.c +++ b/src/libserver/rspamd_symcache.c @@ -104,6 +104,7 @@ struct rspamd_symcache_item { guint64 last_count; struct rspamd_counter_data *cd; gchar *symbol; + const gchar *type_descr; gint type; /* Callback data */ @@ -1019,6 +1020,7 @@ rspamd_symcache_add_symbol (struct rspamd_symcache *cache, gint parent) { struct rspamd_symcache_item *item = NULL; + const gchar *type_str = "normal"; g_assert (cache != NULL); @@ -1097,6 +1099,8 @@ rspamd_symcache_add_symbol (struct rspamd_symcache *cache, g_assert (parent == -1); if (item->type & SYMBOL_TYPE_PREFILTER) { + type_str = "prefilter"; + if (item->type & SYMBOL_TYPE_EMPTY) { /* Executed before mime parsing stage */ g_ptr_array_add (cache->prefilters_empty, item); @@ -1108,10 +1112,12 @@ rspamd_symcache_add_symbol (struct rspamd_symcache *cache, } } else if (item->type & SYMBOL_TYPE_IDEMPOTENT) { + type_str = "idempotent"; g_ptr_array_add (cache->idempotent, item); item->container = cache->idempotent; } else if (item->type & SYMBOL_TYPE_POSTFILTER) { + type_str = "postfilter"; g_ptr_array_add (cache->postfilters, item); item->container = cache->postfilters; } @@ -1144,6 +1150,7 @@ rspamd_symcache_add_symbol (struct rspamd_symcache *cache, item->id = cache->items_by_id->len; g_ptr_array_add (cache->items_by_id, item); item->container = cache->composites; + type_str = "composite"; } else if (item->type & SYMBOL_TYPE_CLASSIFIER) { /* Treat it as normal symbol to allow enable/disable */ @@ -1154,6 +1161,7 @@ rspamd_symcache_add_symbol (struct rspamd_symcache *cache, item->specific.normal.func = NULL; item->specific.normal.user_data = NULL; item->specific.normal.condition_cb = -1; + type_str = "classifier"; } else { item->is_virtual = TRUE; @@ -1164,6 +1172,7 @@ rspamd_symcache_add_symbol (struct rspamd_symcache *cache, g_ptr_array_add (cache->virtual, item); item->container = cache->virtual; /* Not added to items_by_id, handled by parent */ + type_str = "virtual"; } } @@ -1185,16 +1194,17 @@ rspamd_symcache_add_symbol (struct rspamd_symcache *cache, if (name != NULL) { item->symbol = rspamd_mempool_strdup (cache->static_pool, name); - msg_debug_cache ("used items: %d, added symbol: %s, %d", - cache->used_items, name, item->id); + msg_debug_cache ("used items: %d, added symbol: %s, %d; symbol type: %s", + cache->used_items, name, item->id, type_str); } else { g_assert (func != NULL); - msg_debug_cache ("used items: %d, added unnamed symbol: %d", - cache->used_items, item->id); + msg_debug_cache ("used items: %d, added unnamed symbol: %d; symbol type: %s", + cache->used_items, item->id, type_str); } item->deps = g_ptr_array_new (); item->rdeps = g_ptr_array_new (); + item->type_descr = type_str; rspamd_mempool_add_destructor (cache->static_pool, rspamd_ptr_array_free_hard, item->deps); rspamd_mempool_add_destructor (cache->static_pool, @@ -1609,8 +1619,8 @@ rspamd_symcache_is_item_allowed (struct rspamd_task *task, (item->type & SYMBOL_TYPE_MIME_ONLY && !RSPAMD_TASK_IS_MIME(task))) { if (!item->enabled) { - msg_debug_cache_task ("skipping %s of %s as it is permanently disabled", - what, item->symbol); + msg_debug_cache_task ("skipping %s of %s as it is permanently disabled; symbol type=%s", + what, item->symbol, item->type_descr); return FALSE; } @@ -1620,8 +1630,8 @@ rspamd_symcache_is_item_allowed (struct rspamd_task *task, */ if (exec_only) { msg_debug_cache_task ("skipping check of %s as it cannot be " - "executed for this task type", - item->symbol); + "executed for this task type; symbol type=%s", + item->symbol, item->type_descr); return FALSE; } @@ -1636,10 +1646,11 @@ rspamd_symcache_is_item_allowed (struct rspamd_task *task, rspamd_symcache_check_id_list (&item->forbidden_ids, id)) { msg_debug_cache_task ("deny %s of %s as it is forbidden for " - "settings id %ud", + "settings id %ud; symbol type=%s", what, item->symbol, - id); + id, + item->type_descr); return FALSE; } @@ -1651,9 +1662,11 @@ rspamd_symcache_is_item_allowed (struct rspamd_task *task, if (task->settings_elt->policy == RSPAMD_SETTINGS_POLICY_IMPLICIT_ALLOW) { msg_debug_cache_task ("allow execution of %s settings id %ud " - "allows implicit execution of the symbols", + "allows implicit execution of the symbols;" + "symbol type=%s", item->symbol, - id); + id, + item->type_descr); return TRUE; } @@ -1668,25 +1681,29 @@ rspamd_symcache_is_item_allowed (struct rspamd_task *task, } msg_debug_cache_task ("deny %s of %s as it is not listed " - "as allowed for settings id %ud", + "as allowed for settings id %ud; symbol type=%s", what, item->symbol, - id); + id, + item->type_descr); return FALSE; } } else { msg_debug_cache_task ("allow %s of %s for " - "settings id %ud as it can be only disabled explicitly", + "settings id %ud as it can be only disabled explicitly;" + " symbol type=%s", what, item->symbol, - id); + id, + item->type_descr); } } else if (item->type & SYMBOL_TYPE_EXPLICIT_ENABLE) { - msg_debug_cache_task ("deny %s of %s as it must be explicitly enabled", + msg_debug_cache_task ("deny %s of %s as it must be explicitly enabled; symbol type=%s", what, - item->symbol); + item->symbol, + item->type_descr); return FALSE; } @@ -1753,13 +1770,15 @@ rspamd_symcache_check_symbol (struct rspamd_task *task, } if (!check) { - msg_debug_cache_task ("skipping check of %s as its start condition is false", - item->symbol); + msg_debug_cache_task ("skipping check of %s as its start condition is false; " + "symbol type = %s", + item->symbol, item->type_descr); } } if (check) { - msg_debug_cache_task ("execute %s, %d", item->symbol, item->id); + msg_debug_cache_task ("execute %s, %d; symbol type = %s", item->symbol, + item->id, item->type_descr); if (checkpoint->profile) { ev_now_update_if_cheap (task->event_loop); |