]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Do not cache SPF records with DNS errors
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 1 Aug 2016 16:04:58 +0000 (17:04 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 1 Aug 2016 16:04:58 +0000 (17:04 +0100)
src/plugins/spf.c

index 5a12d3c7c84bffd548fcc28de3255eabf860e839..691f50964cb276c210acfd895f9895b2bf3518cd 100644 (file)
@@ -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,