From bb20f42a5e4f13faeb06aecba01d5142af937b0f Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 22 Jan 2015 21:58:59 +0000 Subject: [PATCH] Ignore broken TXT records when parsing include. --- src/libserver/spf.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/libserver/spf.c b/src/libserver/spf.c index 758df486b..a11d032a2 100644 --- a/src/libserver/spf.c +++ b/src/libserver/spf.c @@ -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; -- 2.39.5