diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-04-24 15:57:20 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-04-24 15:57:20 +0100 |
commit | 7448425afed57c354987d1a340cb58e45d24d9d5 (patch) | |
tree | 4390a98fab74b7013ff5c8a9986eacc6291fe329 /src/libutil/map_helpers.c | |
parent | 3281d1d77a53a6d905ef1aee0e0baf1096643283 (diff) | |
download | rspamd-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.c | 28 |
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; |