]> source.dussan.org Git - rspamd.git/commitdiff
Ignore broken TXT records when parsing include.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 22 Jan 2015 21:58:59 +0000 (21:58 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 22 Jan 2015 21:58:59 +0000 (21:58 +0000)
src/libserver/spf.c

index 758df486b5e9d6e1a2e40c2525ee7e2f1be5b4c4..a11d032a2fdc126bffec0eceb50bf5512d35d583 100644 (file)
@@ -546,6 +546,7 @@ spf_record_dns_callback (struct rdns_reply *reply, gpointer arg)
        struct rdns_reply_entry *elt_data;
        GList *tmp = NULL;
        struct rspamd_task *task;
+       gboolean ret;
 
        task = cb->rec->task;
 
@@ -634,16 +635,20 @@ spf_record_dns_callback (struct rdns_reply *reply, gpointer arg)
                                        tmp = cb->rec->addrs;
                                        cb->rec->addrs = NULL;
                                        cb->rec->in_include = TRUE;
-                                       start_spf_parse (cb->rec, begin, 0);
+                                       ret = start_spf_parse (cb->rec, begin, 0);
                                        cb->rec->in_include = FALSE;
 
 #ifdef SPF_DEBUG
                                        msg_info ("after include");
                                        dump_spf_record (cb->rec->addrs);
 #endif
-                                       /* Insert new list */
-                                       cb->addr->is_list = TRUE;
-                                       cb->addr->data.list = cb->rec->addrs;
+
+                                       if (ret) {
+                                               /* Insert new list */
+                                               cb->addr->is_list = TRUE;
+                                               cb->addr->data.list = cb->rec->addrs;
+                                       }
+
                                        cb->rec->addrs = tmp;
                                }
                                break;