diff options
Diffstat (limited to 'plugin/cache')
-rw-r--r-- | plugin/cache/cache.go | 7 | ||||
-rw-r--r-- | plugin/cache/cache_test.go | 11 | ||||
-rw-r--r-- | plugin/cache/item.go | 5 |
3 files changed, 9 insertions, 14 deletions
diff --git a/plugin/cache/cache.go b/plugin/cache/cache.go index 2967e1b34..a8776afac 100644 --- a/plugin/cache/cache.go +++ b/plugin/cache/cache.go @@ -171,7 +171,7 @@ func (w *ResponseWriter) set(m *dns.Msg, key int, mt response.Type, duration tim case response.OtherError: // don't cache these default: - log.Printf("[WARNING] Caching called with unknown typification: %d", mt) + log.Printf("[WARNING] Caching called with unknown classification: %d", mt) } } @@ -186,8 +186,9 @@ func (w *ResponseWriter) Write(buf []byte) (int, error) { } const ( - maxTTL = 1 * time.Hour - maxNTTL = 30 * time.Minute + maxTTL = 1 * time.Hour + maxNTTL = 30 * time.Minute + failSafeTTL = 5 * time.Second defaultCap = 10000 // default capacity of the cache. diff --git a/plugin/cache/cache_test.go b/plugin/cache/cache_test.go index 63b0989b3..b475f3473 100644 --- a/plugin/cache/cache_test.go +++ b/plugin/cache/cache_test.go @@ -22,7 +22,6 @@ type cacheTestCase struct { Authoritative bool RecursionAvailable bool Truncated bool - Response bool shouldCache bool } @@ -113,15 +112,6 @@ var cacheTestCases = []cacheTestCase{ shouldCache: false, }, { - // Response with only something in the additional, this should not be cached. - Response: true, - in: test.Case{ - Qname: "example.org.", Qtype: dns.TypeMX, - Extra: []dns.RR{test.MX("example.org. 1800 IN MX 1 mx.example.org.")}, - }, - shouldCache: false, - }, - { RecursionAvailable: true, Authoritative: true, Case: test.Case{ Qname: "example.org.", Qtype: dns.TypeMX, @@ -150,7 +140,6 @@ func cacheMsg(m *dns.Msg, tc cacheTestCase) *dns.Msg { m.AuthenticatedData = tc.AuthenticatedData m.Authoritative = tc.Authoritative m.Rcode = tc.Rcode - m.Response = tc.Response m.Truncated = tc.Truncated m.Answer = tc.in.Answer m.Ns = tc.in.Ns diff --git a/plugin/cache/item.go b/plugin/cache/item.go index 3943ff4ae..55d618a39 100644 --- a/plugin/cache/item.go +++ b/plugin/cache/item.go @@ -95,6 +95,11 @@ func minMsgTTL(m *dns.Msg, mt response.Type) time.Duration { return 0 } + // No data to examine, return a short ttl as a fail safe. + if len(m.Answer)+len(m.Ns) == 0 { + return failSafeTTL + } + minTTL := maxTTL for _, r := range append(m.Answer, m.Ns...) { switch mt { |