summaryrefslogtreecommitdiffstats
path: root/src/fuzzy_storage.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-05-11 14:29:18 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2017-05-11 14:29:18 +0100
commit7b44f3af0b2b7674c4ee14d386022b8d96e4ceb8 (patch)
tree0b65da08283655a4830ca430d2ae7b20c28d3628 /src/fuzzy_storage.c
parenta43df55fa537d37c93d151b0c17578eefd83eb84 (diff)
downloadrspamd-7b44f3af0b2b7674c4ee14d386022b8d96e4ceb8.tar.gz
rspamd-7b44f3af0b2b7674c4ee14d386022b8d96e4ceb8.zip
[Rework] Use LFU algorithm in LRU cache
Avoid usage of heap as its updates are not cheap. Use LFU algorithm described here: http://antirez.com/news/109
Diffstat (limited to 'src/fuzzy_storage.c')
-rw-r--r--src/fuzzy_storage.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c
index 50bc864bc..99b98ceff 100644
--- a/src/fuzzy_storage.c
+++ b/src/fuzzy_storage.c
@@ -1976,7 +1976,8 @@ rspamd_fuzzy_stat_to_ucl (struct rspamd_fuzzy_storage_ctx *ctx, gboolean ip_stat
while (g_hash_table_iter_next (&ip_it, &k, &v)) {
lru_elt = v;
- ip_cur = rspamd_fuzzy_storage_stat_key (lru_elt->data);
+ ip_cur = rspamd_fuzzy_storage_stat_key (
+ rspamd_lru_hash_element_data (lru_elt));
ucl_object_insert_key (ip_elt, ip_cur,
rspamd_inet_address_to_string (k), 0, true);
}
@@ -2019,7 +2020,8 @@ rspamd_fuzzy_stat_to_ucl (struct rspamd_fuzzy_storage_ctx *ctx, gboolean ip_stat
lru_elt = v;
ucl_object_insert_key (ip_elt,
- ucl_object_fromint (*(guint64 *)lru_elt->data),
+ ucl_object_fromint (*(guint64 *)
+ rspamd_lru_hash_element_data (lru_elt)),
rspamd_inet_address_to_string (k), 0, true);
}