diff --git a/resolver/resolver-tcp.go b/resolver/resolver-tcp.go index c0703caa..8fec2024 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 6be85659..a2af8f27 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: