From c307e314da4d8bed837eef9975e1d4fbe27a856a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sun, 4 May 2014 15:29:17 -0700 Subject: [PATCH] Use any valid SPF record. --- interface | 2 +- src/libserver/spf.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/interface b/interface index dc74a0a93..6828f4735 160000 --- a/interface +++ b/interface @@ -1 +1 @@ -Subproject commit dc74a0a935175748808f86a8f2e0a183f1788521 +Subproject commit 6828f4735bb998f20b00e1b8d144aec5c102d947 diff --git a/src/libserver/spf.c b/src/libserver/spf.c index 71bde4527..3839bd894 100644 --- a/src/libserver/spf.c +++ b/src/libserver/spf.c @@ -91,7 +91,7 @@ do { \ } while (0) \ static gboolean parse_spf_record (struct rspamd_task *task, struct spf_record *rec); -static void start_spf_parse (struct spf_record *rec, gchar *begin, guint ttl); +static gboolean start_spf_parse (struct spf_record *rec, gchar *begin, guint ttl); /* Determine spf mech */ static spf_mech_t @@ -1345,7 +1345,7 @@ parse_spf_scopes (struct spf_record *rec, gchar **begin) } } -static void +static gboolean start_spf_parse (struct spf_record *rec, gchar *begin, guint ttl) { /* Skip spaces */ @@ -1367,6 +1367,7 @@ start_spf_parse (struct spf_record *rec, gchar *begin, guint ttl) if (ttl != 0) { rec->ttl = ttl; } + return TRUE; } } else if (g_ascii_strncasecmp (begin, SPF_VER2_STR, sizeof (SPF_VER2_STR) - 1) == 0) { @@ -1394,11 +1395,13 @@ start_spf_parse (struct spf_record *rec, gchar *begin, guint ttl) rec->ttl = ttl; } } + return TRUE; } else { msg_debug ("<%s>: spf error for domain %s: bad spf record version: %*s", rec->task->message_id, rec->sender_domain, sizeof (SPF_VER1_STR) - 1, begin); } + return FALSE; } static void @@ -1410,7 +1413,9 @@ spf_dns_callback (struct rdns_reply *reply, gpointer arg) rec->requests_inflight --; if (reply->code == RDNS_RC_NOERROR) { LL_FOREACH (reply->entries, elt) { - start_spf_parse (rec, elt->content.txt.data, elt->ttl); + if (start_spf_parse (rec, elt->content.txt.data, elt->ttl)) { + break; + } } } -- 2.39.5