aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-08-01 17:04:58 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-08-01 17:04:58 +0100
commitc75906d95cbda6828fbfe4e282a98a3e77d50c42 (patch)
tree007b531f475b0ecc1e5ffa4f338aed74ac318a22
parent62799e3adc1e9c854a9b58bfa58b21405ffb74e6 (diff)
downloadrspamd-c75906d95cbda6828fbfe4e282a98a3e77d50c42.tar.gz
rspamd-c75906d95cbda6828fbfe4e282a98a3e77d50c42.zip
[Fix] Do not cache SPF records with DNS errors
-rw-r--r--src/plugins/spf.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/plugins/spf.c b/src/plugins/spf.c
index 5a12d3c7c..691f50964 100644
--- a/src/plugins/spf.c
+++ b/src/plugins/spf.c
@@ -369,14 +369,16 @@ spf_plugin_callback (struct spf_resolved *record, struct rspamd_task *task,
if (record && record->elts->len > 0 && record->domain) {
- if ((l =
- rspamd_lru_hash_lookup (spf_module_ctx->spf_hash,
- record->domain, task->tv.tv_sec)) == NULL) {
+ if ((l = rspamd_lru_hash_lookup (spf_module_ctx->spf_hash,
+ record->domain, task->tv.tv_sec)) == NULL) {
l = spf_record_ref (record);
- rspamd_lru_hash_insert (spf_module_ctx->spf_hash,
- record->domain, l,
- task->tv.tv_sec, record->ttl);
+
+ if (!record->failed) {
+ rspamd_lru_hash_insert (spf_module_ctx->spf_hash,
+ record->domain, l,
+ task->tv.tv_sec, record->ttl);
+ }
}
spf_record_ref (l);
@@ -406,6 +408,7 @@ spf_symbol_callback (struct rspamd_task *task, void *unused)
}
domain = rspamd_spf_get_domain (task);
+
if (domain) {
if ((l =
rspamd_lru_hash_lookup (spf_module_ctx->spf_hash, domain,