From cc27a6dcda6076d6db3a2bba740832c49dc11c2d Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 18 Mar 2015 17:23:30 +0000 Subject: [PATCH] Fix refcounts. --- src/libserver/spf.c | 13 +++++++++++++ src/plugins/spf.c | 6 ++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/libserver/spf.c b/src/libserver/spf.c index eae35d352..4f0a40df5 100644 --- a/src/libserver/spf.c +++ b/src/libserver/spf.c @@ -1687,3 +1687,16 @@ resolve_spf (struct rspamd_task *task, spf_cb_t callback) return FALSE; } + +struct spf_resolved * +spf_record_ref (struct spf_resolved *rec) +{ + REF_RETAIN (rec); + return rec; +} + +void +spf_record_unref (struct spf_resolved *rec) +{ + REF_RELEASE (rec); +} diff --git a/src/plugins/spf.c b/src/plugins/spf.c index 08e4ec9c3..a2869d04a 100644 --- a/src/plugins/spf.c +++ b/src/plugins/spf.c @@ -302,10 +302,12 @@ spf_plugin_callback (struct spf_resolved *record, struct rspamd_task *task) record->domain, task->tv.tv_sec)) == NULL) { rspamd_lru_hash_insert (spf_module_ctx->spf_hash, - record->domain, - record, task->tv.tv_sec, record->ttl); + record->domain, spf_record_ref (record), + task->tv.tv_sec, record->ttl); } + spf_record_ref (l); spf_check_list (l, task); + spf_record_unref (l); } } -- 2.39.5