diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-05-20 09:48:20 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-05-20 09:48:20 +0100 |
commit | bc5cf4c2403854857c61025b8a19ab5abb2e28df (patch) | |
tree | 6ec1d68ab00a1dd22a4b4ee444933c5a2ab7fb50 | |
parent | b0274f052131b83aa326d1fae717d54dce8b7229 (diff) | |
download | rspamd-bc5cf4c2403854857c61025b8a19ab5abb2e28df.tar.gz rspamd-bc5cf4c2403854857c61025b8a19ab5abb2e28df.zip |
[Minor] Allow explicit deletion from LRU cache
-rw-r--r-- | src/libutil/hash.c | 17 | ||||
-rw-r--r-- | src/libutil/hash.h | 9 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/libutil/hash.c b/src/libutil/hash.c index 591af9027..1afe947ee 100644 --- a/src/libutil/hash.c +++ b/src/libutil/hash.c @@ -342,6 +342,23 @@ rspamd_lru_hash_lookup (rspamd_lru_hash_t *hash, gconstpointer key, time_t now) return NULL; } +gboolean +rspamd_lru_hash_remove (rspamd_lru_hash_t *hash, + gconstpointer key) +{ + rspamd_lru_element_t *res; + + res = g_hash_table_lookup (hash->tbl, key); + + if (res != NULL) { + rspamd_lru_hash_remove_node (hash, res); + + return TRUE; + } + + return FALSE; +} + void rspamd_lru_hash_insert (rspamd_lru_hash_t *hash, gpointer key, gpointer value, time_t now, guint ttl) diff --git a/src/libutil/hash.h b/src/libutil/hash.h index 80bdf8ae3..7638d6397 100644 --- a/src/libutil/hash.h +++ b/src/libutil/hash.h @@ -53,6 +53,15 @@ rspamd_lru_hash_t * rspamd_lru_hash_new_full ( gpointer rspamd_lru_hash_lookup (rspamd_lru_hash_t *hash, gconstpointer key, time_t now); + +/** + * Removes key from LRU cache + * @param hash + * @param key + * @return TRUE if key has been found and removed + */ +gboolean rspamd_lru_hash_remove (rspamd_lru_hash_t *hash, + gconstpointer key); /** * Insert item in hash * @param hash hash object |