summaryrefslogtreecommitdiffstats
path: root/src/libserver
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-05-26 18:17:35 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-05-26 18:17:35 +0100
commit84dca6933525343089fc15d008ecca8a57e4df55 (patch)
treeb8024dd9158bb79eea191251afb5f1cc499430b2 /src/libserver
parent594ec49b6d8133db7d9883cc552698fcd33e0c5c (diff)
downloadrspamd-84dca6933525343089fc15d008ecca8a57e4df55.tar.gz
rspamd-84dca6933525343089fc15d008ecca8a57e4df55.zip
Rework structure.
Diffstat (limited to 'src/libserver')
-rw-r--r--src/libserver/symbols_cache.c49
-rw-r--r--src/libserver/symbols_cache.h3
2 files changed, 12 insertions, 40 deletions
diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c
index d673ee017..8d37a9ead 100644
--- a/src/libserver/symbols_cache.c
+++ b/src/libserver/symbols_cache.c
@@ -50,71 +50,42 @@ struct rspamd_symbols_cache_header {
};
struct symbols_cache {
- /* Normal cache items */
- GList *static_items;
-
- /* Items that have negative weights */
- GList *negative_items;
-
/* Hash table for fast access */
GHashTable *items_by_symbol;
-
rspamd_mempool_t *static_pool;
-
guint cur_items;
guint used_items;
guint uses;
- gpointer map;
struct rspamd_config *cfg;
};
-struct saved_cache_item {
- gchar symbol[MAX_SYMBOL];
- double weight;
- guint32 frequency;
- double avg_time;
-};
-
-struct dynamic_map_item {
- struct in_addr addr;
- guint32 mask;
- gboolean negative;
-};
-
struct counter_data {
gdouble value;
gint number;
};
struct cache_item {
- /* Static item's data */
- struct saved_cache_item *s;
- struct counter_data *cd;
+ /* This block is likely shared */
+ gdouble avg_time;
gdouble weight;
guint32 frequency;
- gdouble avg_time;
-
- rspamd_mempool_mutex_t *mtx;
-
- /* For dynamic rules */
- struct dynamic_map_item *networks;
- guint32 networks_number;
- gboolean is_dynamic;
- gboolean is_skipped;
+ /* Static item's data */
+ struct counter_data *cd;
+ enum rspamd_symbol_type type;
/* Callback data */
symbol_func_t func;
gpointer user_data;
- /* Flags of virtual symbols */
- gboolean is_virtual;
- gboolean is_callback;
- gboolean is_ghost;
-
+ /* Parent symbol id for virtual symbols */
+ gint parent;
/* Priority */
gint priority;
+ gint id;
gdouble metric_weight;
+
+ rspamd_mempool_mutex_t *mtx;
};
gint
diff --git a/src/libserver/symbols_cache.h b/src/libserver/symbols_cache.h
index 2a7bc8624..41237df83 100644
--- a/src/libserver/symbols_cache.h
+++ b/src/libserver/symbols_cache.h
@@ -38,7 +38,8 @@ typedef void (*symbol_func_t)(struct rspamd_task *task, gpointer user_data);
enum rspamd_symbol_type {
SYMBOL_TYPE_NORMAL,
SYMBOL_TYPE_VIRTUAL,
- SYMBOL_TYPE_CALLBACK
+ SYMBOL_TYPE_CALLBACK,
+ SYMBOL_TYPE_GHOST
};
/**