From 2449075bca9e12bf052a2d217e05a9196817d5bd Mon Sep 17 00:00:00 2001 From: Eugene Bujak Date: Fri, 2 Nov 2018 12:15:30 +0300 Subject: [PATCH] Revert "Cache DNS lookups when resolving safebrowsing or parental servers, also cache replacement hostnames as well." This reverts commit a5d105352057bf24a59a08a2695f1d48f033cb17. This cache had unintended side effects. --- coredns_plugin/coredns_plugin.go | 45 +++++++++----------------------- dnsfilter/dnsfilter.go | 1 - 2 files changed, 13 insertions(+), 33 deletions(-) diff --git a/coredns_plugin/coredns_plugin.go b/coredns_plugin/coredns_plugin.go index 5209e37b..f937cb84 100644 --- a/coredns_plugin/coredns_plugin.go +++ b/coredns_plugin/coredns_plugin.go @@ -41,16 +41,6 @@ func init() { }) } -type cacheEntry struct { - answer []dns.RR - lastUpdated time.Time -} - -var ( - lookupCacheTime = time.Minute * 30 - lookupCache = map[string]cacheEntry{} -) - type plugFilter struct { ID int64 Path string @@ -345,29 +335,20 @@ func (p *plug) replaceHostWithValAndReply(ctx context.Context, w dns.ResponseWri records = append(records, result) } else { // this is a domain name, need to look it up - cacheentry := lookupCache[val] - if time.Since(cacheentry.lastUpdated) > lookupCacheTime { - req := new(dns.Msg) - req.SetQuestion(dns.Fqdn(val), question.Qtype) - req.RecursionDesired = true - reqstate := request.Request{W: w, Req: req, Context: ctx} - result, err := p.upstream.Lookup(reqstate, dns.Fqdn(val), reqstate.QType()) - if err != nil { - log.Printf("Got error %s\n", err) - return dns.RcodeServerFailure, fmt.Errorf("plugin/dnsfilter: %s", err) + req := new(dns.Msg) + req.SetQuestion(dns.Fqdn(val), question.Qtype) + req.RecursionDesired = true + reqstate := request.Request{W: w, Req: req, Context: ctx} + result, err := p.upstream.Lookup(reqstate, dns.Fqdn(val), reqstate.QType()) + if err != nil { + log.Printf("Got error %s\n", err) + return dns.RcodeServerFailure, fmt.Errorf("plugin/dnsfilter: %s", err) + } + if result != nil { + for _, answer := range result.Answer { + answer.Header().Name = question.Name } - if result != nil { - for _, answer := range result.Answer { - answer.Header().Name = question.Name - } - records = result.Answer - cacheentry.answer = result.Answer - cacheentry.lastUpdated = time.Now() - lookupCache[val] = cacheentry - } - } else { - // get from cache - records = cacheentry.answer + records = result.Answer } } m := new(dns.Msg) diff --git a/dnsfilter/dnsfilter.go b/dnsfilter/dnsfilter.go index 5fb5d0ed..c34cd590 100644 --- a/dnsfilter/dnsfilter.go +++ b/dnsfilter/dnsfilter.go @@ -17,7 +17,6 @@ import ( "sync/atomic" "time" - _ "github.com/benburkert/dns/init" "github.com/bluele/gcache" "golang.org/x/net/publicsuffix" )