From: Vsevolod Stakhov Date: Wed, 18 Mar 2015 17:23:30 +0000 (+0000) Subject: Fix refcounts. X-Git-Tag: 0.9.0~477^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=cc27a6dcda6076d6db3a2bba740832c49dc11c2d;p=rspamd.git Fix refcounts. --- 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); } }