diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2010-07-20 17:19:04 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2010-07-20 17:19:04 +0400 |
commit | 18816c9485063d48a11b0536f299512924b49ab4 (patch) | |
tree | 4574566a79be3c85337f5c9163ada51d795f79b5 /src | |
parent | 8dc9f3bed874f0944c4120fd9ec0c65eff0b2359 (diff) | |
download | rspamd-18816c9485063d48a11b0536f299512924b49ab4.tar.gz rspamd-18816c9485063d48a11b0536f299512924b49ab4.zip |
* Fix another error with early task destroying
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/spf.c | 7 | ||||
-rw-r--r-- | src/spf.c | 4 |
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); } } @@ -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; - } } } |