From aa2302e3f44ae9c80c87d1c6597ba0a424128532 Mon Sep 17 00:00:00 2001 From: Chris O'Haver Date: Wed, 21 Feb 2018 16:02:49 -0500 Subject: [PATCH] incl addtl rrs when computing cache ttl (#1549) --- plugin/cache/item.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugin/cache/item.go b/plugin/cache/item.go index 55d618a39..40dff0b65 100644 --- a/plugin/cache/item.go +++ b/plugin/cache/item.go @@ -96,12 +96,16 @@ func minMsgTTL(m *dns.Msg, mt response.Type) time.Duration { } // No data to examine, return a short ttl as a fail safe. - if len(m.Answer)+len(m.Ns) == 0 { + if len(m.Answer)+len(m.Ns)+len(m.Extra) == 0 { return failSafeTTL } minTTL := maxTTL - for _, r := range append(m.Answer, m.Ns...) { + for _, r := range append(append(m.Answer, m.Ns...), m.Extra...) { + if r.Header().Rrtype == dns.TypeOPT { + // OPT records use TTL field for extended rcode and flags + continue + } switch mt { case response.NameError, response.NoData: if r.Header().Rrtype == dns.TypeSOA {