]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Fix parsing includes and redirects in SPF
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 6 Oct 2016 09:04:38 +0000 (10:04 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 6 Oct 2016 09:05:59 +0000 (10:05 +0100)
Issue: #1009
Reported by: @moisseev

src/libserver/spf.c

index 2d6f864bae4e88c480e5570a0de1d69a7a6b78c7..5eb8dbd1cc5d9415fee5ac46c358c3afab313cb6 100644 (file)
@@ -670,11 +670,8 @@ spf_record_dns_callback (struct rdns_reply *reply, gpointer arg)
                                        break;
                                case SPF_RESOLVE_REDIRECT:
                                        if (elt_data->type == RDNS_REQUEST_TXT) {
-                                               if (spf_process_txt_record (rec, cb->resolved, reply)) {
-                                                       cb->addr->flags |= RSPAMD_SPF_FLAG_RESOLVED;
-                                               }
-                                               else {
-                                                       cb->addr->flags &= ~RSPAMD_SPF_FLAG_RESOLVED;
+                                               cb->addr->flags |= RSPAMD_SPF_FLAG_RESOLVED;
+                                               if (!spf_process_txt_record (rec, cb->resolved, reply)) {
                                                        cb->addr->flags |= RSPAMD_SPF_FLAG_PERMFAIL;
                                                }
                                        }
@@ -683,12 +680,8 @@ spf_record_dns_callback (struct rdns_reply *reply, gpointer arg)
                                        break;
                                case SPF_RESOLVE_INCLUDE:
                                        if (elt_data->type == RDNS_REQUEST_TXT) {
-                                               if (spf_process_txt_record (rec, cb->resolved, reply)) {
-                                                       cb->addr->flags |= RSPAMD_SPF_FLAG_RESOLVED;
-                                               }
-                                               else {
-                                                       cb->addr->flags &= ~RSPAMD_SPF_FLAG_RESOLVED;
-                                               }
+                                               cb->addr->flags |= RSPAMD_SPF_FLAG_RESOLVED;
+                                               spf_process_txt_record (rec, cb->resolved, reply);
                                        }
                                        goto end;