浏览代码

Fix spf redirects.

tags/1.1.0
Vsevolod Stakhov 8 年前
父节点
当前提交
0c43dd1200
共有 2 个文件被更改,包括 8 次插入4 次删除
  1. 7
    4
      src/libserver/spf.c
  2. 1
    0
      src/libserver/spf.h

+ 7
- 4
src/libserver/spf.c 查看文件

@@ -249,7 +249,7 @@ static void
rspamd_spf_process_reference (struct spf_resolved *target,
struct spf_addr *addr, struct spf_record *rec, gboolean top)
{
struct spf_resolved_element *elt;
struct spf_resolved_element *elt, *relt;
struct spf_addr *cur = NULL, taddr;
guint i;

@@ -267,7 +267,7 @@ rspamd_spf_process_reference (struct spf_resolved *target,

for (i = 0; i < elt->elts->len; i++) {
cur = g_ptr_array_index (elt->elts, i);
if (cur->flags & RSPAMD_SPF_FLAG_PARSED) {
if (cur->flags & RSPAMD_SPF_FLAG_REDIRECT) {
break;
}
}
@@ -281,7 +281,10 @@ rspamd_spf_process_reference (struct spf_resolved *target,

g_assert (cur->flags & RSPAMD_SPF_FLAG_REFRENCE);
g_assert (cur->m.idx < rec->resolved->len);
elt = g_ptr_array_index (rec->resolved, cur->m.idx);
relt = g_ptr_array_index (rec->resolved, cur->m.idx);
msg_debug_spf ("domain %s is redirected to %s", elt->cur_domain,
relt->cur_domain);
elt = relt;
}

for (i = 0; i < elt->elts->len; i++) {
@@ -1065,7 +1068,7 @@ parse_spf_redirect (struct spf_record *rec,

cb = rspamd_mempool_alloc (task->task_pool, sizeof (struct spf_dns_cb));
/* Set reference */
addr->flags |= RSPAMD_SPF_FLAG_REFRENCE;
addr->flags |= RSPAMD_SPF_FLAG_REFRENCE | RSPAMD_SPF_FLAG_REDIRECT;
addr->m.idx = rec->resolved->len;

cb->rec = rec;

+ 1
- 0
src/libserver/spf.h 查看文件

@@ -34,6 +34,7 @@ typedef enum spf_action_e {
#define RSPAMD_SPF_FLAG_PARSED (1 << 3)
#define RSPAMD_SPF_FLAG_VALID (1 << 4)
#define RSPAMD_SPF_FLAG_REFRENCE (1 << 5)
#define RSPAMD_SPF_FLAG_REDIRECT (1 << 6)

struct spf_addr {
guchar addr6[sizeof (struct in6_addr)];

正在加载...
取消
保存