diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-01-22 21:58:59 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-01-22 21:58:59 +0000 |
commit | bb20f42a5e4f13faeb06aecba01d5142af937b0f (patch) | |
tree | f66db60479da1921ef6d2f43a6af52e76f0390cc /src/libserver | |
parent | 1c01e556e390ff5263136a34900334a689bef67f (diff) | |
download | rspamd-bb20f42a5e4f13faeb06aecba01d5142af937b0f.tar.gz rspamd-bb20f42a5e4f13faeb06aecba01d5142af937b0f.zip |
Ignore broken TXT records when parsing include.
Diffstat (limited to 'src/libserver')
-rw-r--r-- | src/libserver/spf.c | 13 |
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; |