From a60a53ed46f4c4790f3727d22aa26f030888be2f Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 30 Nov 2020 15:08:25 +0100 Subject: [PATCH] Shorten caching for empty success responses. --- resolver/resolver-tcp.go | 4 ---- resolver/rrcache.go | 6 ++++++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/resolver/resolver-tcp.go b/resolver/resolver-tcp.go index c0703caa6..8fec20248 100644 --- a/resolver/resolver-tcp.go +++ b/resolver/resolver-tcp.go @@ -479,10 +479,6 @@ func (mgr *tcpResolverConnMgr) handleQueryResponse(conn *dns.Conn, msg *dns.Msg) // persist to database rrCache := inFlight.MakeCacheRecord(msg) - if !rrCache.Cacheable() { - return - } - rrCache.Clean(minTTL) err := rrCache.Save() if err != nil { diff --git a/resolver/rrcache.go b/resolver/rrcache.go index 6be856591..a2af8f276 100644 --- a/resolver/rrcache.go +++ b/resolver/rrcache.go @@ -85,6 +85,12 @@ func (rrCache *RRCache) Clean(minExpires uint32) { lowestTTL = maxTTL } + // Adjust return code if there are no answers + if rrCache.RCode == dns.RcodeSuccess && + len(rrCache.Answer) == 0 { + rrCache.RCode = dns.RcodeNameError + } + // shorten caching switch { case rrCache.RCode != dns.RcodeSuccess: