kh_foreach_value(jb->ctx->dynamic_keys, key, {
REF_RELEASE(key);
});
- kh_destroy(rspamd_fuzzy_keys_hash, jb->ctx->dynamic_keys);
+ /* Clear hash content but don't destroy - mempool destructor will handle it */
+ kh_clear(rspamd_fuzzy_keys_hash, jb->ctx->dynamic_keys);
g_free(jb);
}
struct fuzzy_key *key = p;
if (key) {
+ if (key->key) {
+ rspamd_keypair_unref(key->key);
+ }
+
if (key->stat) {
REF_RELEASE(key->stat);
}
}
if (rspamd_keypair_type(kp) != RSPAMD_KEYPAIR_KEX) {
+ rspamd_keypair_unref(kp);
return FALSE;
}
struct fuzzy_keymap_ucl_buf *jb, **pjb;
ctx->dynamic_keys = kh_init(rspamd_fuzzy_keys_hash);
+ rspamd_mempool_add_destructor(ctx->cfg->cfg_pool,
+ (rspamd_mempool_destruct_t) fuzzy_hash_table_dtor,
+ ctx->dynamic_keys);
/* Now try to add map with ucl data */
jb = g_malloc(sizeof(struct fuzzy_keymap_ucl_buf));
pjb = g_malloc(sizeof(struct fuzzy_keymap_ucl_buf *));