summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2010-07-20 17:19:04 +0400
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2010-07-20 17:19:04 +0400
commit18816c9485063d48a11b0536f299512924b49ab4 (patch)
tree4574566a79be3c85337f5c9163ada51d795f79b5 /src
parent8dc9f3bed874f0944c4120fd9ec0c65eff0b2359 (diff)
downloadrspamd-18816c9485063d48a11b0536f299512924b49ab4.tar.gz
rspamd-18816c9485063d48a11b0536f299512924b49ab4.zip
* Fix another error with early task destroying
Diffstat (limited to 'src')
-rw-r--r--src/plugins/spf.c7
-rw-r--r--src/spf.c4
2 files changed, 7 insertions, 4 deletions
diff --git a/src/plugins/spf.c b/src/plugins/spf.c
index 6ab23ee37..315e57f58 100644
--- a/src/plugins/spf.c
+++ b/src/plugins/spf.c
@@ -162,10 +162,17 @@ spf_plugin_callback (struct spf_record *record, struct worker_task *task)
}
cur = g_list_next (cur);
}
+ if (record->addrs != NULL) {
+ /* Free addresses that we already proceed */
+ g_list_free (record->addrs);
+ record->addrs = NULL;
+ }
}
+
if (task->save.saved == 0) {
/* Call other filters */
task->save.saved = 1;
+ /* Note that here task MAY be destroyed */
process_filters (task);
}
}
diff --git a/src/spf.c b/src/spf.c
index 79a0855ea..7a8de6746 100644
--- a/src/spf.c
+++ b/src/spf.c
@@ -381,10 +381,6 @@ spf_record_dns_callback (struct rspamd_dns_reply *reply, gpointer arg)
cb->rec->task->save.saved--;
if (cb->rec->task->save.saved == 0 && cb->rec->callback) {
cb->rec->callback (cb->rec, cb->rec->task);
- if (cb->rec->addrs) {
- g_list_free (cb->rec->addrs);
- cb->rec->addrs = NULL;
- }
}
}