]> source.dussan.org Git - rspamd.git/commitdiff
* Fix another error with early task destroying
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 20 Jul 2010 13:19:04 +0000 (17:19 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 20 Jul 2010 13:19:04 +0000 (17:19 +0400)
src/plugins/spf.c
src/spf.c

index 6ab23ee37718c69a03e2c2ea73979a80237bc50a..315e57f581145ab6d4782e98d24871daec4e1d12 100644 (file)
@@ -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);
        }
 }
index 79a0855ea6db5de66a4ea3f8e2461c892d2ad951..7a8de674623503871da34c0a72373d253ab971b8 100644 (file)
--- 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;
-               }
        }
 }