aboutsummaryrefslogtreecommitdiffstats
path: root/src/libutil/map_helpers.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2018-04-24 15:57:20 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2018-04-24 15:57:20 +0100
commit7448425afed57c354987d1a340cb58e45d24d9d5 (patch)
tree4390a98fab74b7013ff5c8a9986eacc6291fe329 /src/libutil/map_helpers.c
parent3281d1d77a53a6d905ef1aee0e0baf1096643283 (diff)
downloadrspamd-7448425afed57c354987d1a340cb58e45d24d9d5.tar.gz
rspamd-7448425afed57c354987d1a340cb58e45d24d9d5.zip
[Fix] Add resolving version of radix map helper
Diffstat (limited to 'src/libutil/map_helpers.c')
-rw-r--r--src/libutil/map_helpers.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/libutil/map_helpers.c b/src/libutil/map_helpers.c
index dbbe70e84..7bb442a97 100644
--- a/src/libutil/map_helpers.c
+++ b/src/libutil/map_helpers.c
@@ -444,6 +444,34 @@ rspamd_map_helper_insert_radix (gpointer st, gconstpointer key, gconstpointer va
}
void
+rspamd_map_helper_insert_radix_resolve (gpointer st, gconstpointer key, gconstpointer value)
+{
+ struct rspamd_radix_map_helper *r = (struct rspamd_radix_map_helper *)st;
+ struct rspamd_map_helper_value *val;
+ gsize vlen;
+ khiter_t k;
+ gconstpointer nk;
+ gint res;
+
+ vlen = strlen (value);
+ val = rspamd_mempool_alloc0 (r->pool, sizeof (*val) +
+ vlen + 1);
+ memcpy (val->value, value, vlen);
+
+ k = kh_get (rspamd_map_hash, r->htb, key);
+
+ if (k == kh_end (r->htb)) {
+ nk = rspamd_mempool_strdup (r->pool, key);
+ k = kh_put (rspamd_map_hash, r->htb, nk, &res);
+ }
+
+ nk = kh_key (r->htb, k);
+ val->key = nk;
+ kh_value (r->htb, k) = val;
+ rspamd_radix_add_iplist (key, ",", r->trie, val, TRUE);
+}
+
+void
rspamd_map_helper_insert_hash (gpointer st, gconstpointer key, gconstpointer value)
{
struct rspamd_hash_map_helper *ht = st;