aboutsummaryrefslogtreecommitdiffstats
path: root/src/libserver
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-01-22 21:58:59 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-01-22 21:58:59 +0000
commitbb20f42a5e4f13faeb06aecba01d5142af937b0f (patch)
treef66db60479da1921ef6d2f43a6af52e76f0390cc /src/libserver
parent1c01e556e390ff5263136a34900334a689bef67f (diff)
downloadrspamd-bb20f42a5e4f13faeb06aecba01d5142af937b0f.tar.gz
rspamd-bb20f42a5e4f13faeb06aecba01d5142af937b0f.zip
Ignore broken TXT records when parsing include.
Diffstat (limited to 'src/libserver')
-rw-r--r--src/libserver/spf.c13
1 files 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;