summaryrefslogtreecommitdiffstats
path: root/src/plugins/surbl.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-05-18 12:00:09 +0300
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-05-18 12:01:34 +0300
commit46f96b785505dd0529d2761715e0e29687f5e7d5 (patch)
tree5050247d133e5223676ca6567ca9a3b73a93a50b /src/plugins/surbl.c
parent8378754202667e0ee463ba2decd8eaed8b81769b (diff)
downloadrspamd-46f96b785505dd0529d2761715e0e29687f5e7d5.tar.gz
rspamd-46f96b785505dd0529d2761715e0e29687f5e7d5.zip
[Fix] Further fixes for surbl extensions map
Diffstat (limited to 'src/plugins/surbl.c')
-rw-r--r--src/plugins/surbl.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/plugins/surbl.c b/src/plugins/surbl.c
index f49a69c8b..1063013c7 100644
--- a/src/plugins/surbl.c
+++ b/src/plugins/surbl.c
@@ -80,6 +80,15 @@ module_t surbl_module = {
};
static void
+exceptions_free_value (gpointer v)
+{
+ rspamd_ftok_t *val = v;
+
+ g_free ((gpointer)val->begin);
+ g_slice_free1 (sizeof (*val), val);
+}
+
+static void
exception_insert (gpointer st, gconstpointer key, gconstpointer value)
{
GHashTable **t = st;
@@ -100,18 +109,18 @@ exception_insert (gpointer st, gconstpointer key, gconstpointer value)
return;
}
- val = g_malloc (sizeof (rspamd_ftok_t));
- val->begin = key;
+ val = g_slice_alloc (sizeof (rspamd_ftok_t));
+ val->begin = g_strdup (key);
val->len = strlen (key);
if (t[level] == NULL) {
t[level] = g_hash_table_new_full (rspamd_ftok_icase_hash,
rspamd_ftok_icase_equal,
- g_free,
+ exceptions_free_value,
g_free);
}
- g_hash_table_insert (t[level], val, g_strdup (value));
+ g_hash_table_replace (t[level], val, g_strdup (value));
}
static gchar *
@@ -127,7 +136,7 @@ read_exceptions_list (gchar * chunk,
chunk,
len,
data,
- (insert_func) exception_insert,
+ exception_insert,
"",
final);
}
@@ -256,9 +265,7 @@ surbl_module_init (struct rspamd_config *cfg, struct module_ctx **ctx)
surbl_module_ctx->whitelist = g_hash_table_new (rspamd_strcase_hash,
rspamd_strcase_equal);
/* Zero exceptions hashes */
- surbl_module_ctx->exceptions = rspamd_mempool_alloc0 (
- surbl_module_ctx->surbl_pool,
- MAX_LEVELS * sizeof (GHashTable *));
+ surbl_module_ctx->exceptions = g_malloc0 (MAX_LEVELS * sizeof (GHashTable *));
/* Register destructors */
rspamd_mempool_add_destructor (surbl_module_ctx->surbl_pool,
(rspamd_mempool_destruct_t) g_hash_table_destroy,