diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-08-01 17:04:58 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-08-01 17:04:58 +0100 |
commit | c75906d95cbda6828fbfe4e282a98a3e77d50c42 (patch) | |
tree | 007b531f475b0ecc1e5ffa4f338aed74ac318a22 | |
parent | 62799e3adc1e9c854a9b58bfa58b21405ffb74e6 (diff) | |
download | rspamd-c75906d95cbda6828fbfe4e282a98a3e77d50c42.tar.gz rspamd-c75906d95cbda6828fbfe4e282a98a3e77d50c42.zip |
[Fix] Do not cache SPF records with DNS errors
-rw-r--r-- | src/plugins/spf.c | 15 |
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, |