elt = g_ptr_array_index (rec->resolved, 0);
}
+ if (rec->ttl < target->ttl) {
+ msg_debug_spf ("reducing ttl from %d to %d after subrecord processing %s",
+ target->ttl, rec->ttl, rec->sender_domain);
+ target->ttl = rec->ttl;
+ }
+
if (elt->redirected) {
g_assert (elt->elts->len > 0);
}
/* Now compare from end to start */
- for (; ;) {
+ for (;;) {
if (g_ascii_tolower (*dend) != g_ascii_tolower (*nend)) {
msg_debug_spf ("ptr records mismatch: %s and %s", dend, nend);
return FALSE;
addr = cb->addr;
if (reply->code == RDNS_RC_NOERROR) {
- /* Add all logic for all DNS states here */
LL_FOREACH (reply->entries, elt_data) {
+ /* Adjust ttl if a resolved record has lower ttl than spf record itself */
+ if ((guint)elt_data->ttl < rec->ttl) {
+ msg_debug_spf ("reducing ttl from %d to %d after DNS resolving",
+ rec->ttl, elt_data->ttl);
+ rec->ttl = elt_data->ttl;
+ }
+
switch (cb->cur_action) {
case SPF_RESOLVE_MX:
if (elt_data->type == RDNS_REQUEST_MX) {
/* Here we set all masks to 0 */
addr->m.idx = 0;
addr->flags |= RSPAMD_SPF_FLAG_ANY;
+ msg_debug_spf ("parsed all elt");
return TRUE;
}
}
addr->flags |= RSPAMD_SPF_FLAG_IPV4;
+ msg_debug_spf ("parsed ipv4 record %s/%d", ipbuf, addr->m.dual.mask_v4);
return TRUE;
}
}
addr->flags |= RSPAMD_SPF_FLAG_IPV6;
+ msg_debug_spf ("parsed ipv6 record %s/%d", ipbuf, addr->m.dual.mask_v6);
return TRUE;
}