diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-05-18 12:00:09 +0300 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-05-18 12:01:34 +0300 |
commit | 46f96b785505dd0529d2761715e0e29687f5e7d5 (patch) | |
tree | 5050247d133e5223676ca6567ca9a3b73a93a50b /src/plugins/surbl.c | |
parent | 8378754202667e0ee463ba2decd8eaed8b81769b (diff) | |
download | rspamd-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.c | 23 |
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, |