]> source.dussan.org Git - rspamd.git/commitdiff
Fix refcounts.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 18 Mar 2015 17:23:30 +0000 (17:23 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 18 Mar 2015 17:23:30 +0000 (17:23 +0000)
src/libserver/spf.c
src/plugins/spf.c

index eae35d352cdb8a01a65a0e02c827cb532a811421..4f0a40df567c5813504cc51e70df49c19c1974d0 100644 (file)
@@ -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);
+}
index 08e4ec9c30685c485369f14fbf1279d3f67597e6..a2869d04a8c0039c069f4fc19991c346efd6899e 100644 (file)
@@ -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);
        }
 }