diff options
author | 2018-02-17 19:45:52 +0100 | |
---|---|---|
committer | 2018-02-17 19:45:52 +0100 | |
commit | 8cce06cba10c42ce501a57bd3b7d06ca6064d774 (patch) | |
tree | 8b5058915fe0dc06580c1a81a3f795449e17a508 /plugin/cache | |
parent | 9719a47c1bc0bf0098ee07fd004e4d2d2ee139d9 (diff) | |
download | coredns-8cce06cba10c42ce501a57bd3b7d06ca6064d774.tar.gz coredns-8cce06cba10c42ce501a57bd3b7d06ca6064d774.tar.zst coredns-8cce06cba10c42ce501a57bd3b7d06ca6064d774.zip |
Type.extra (#1538)
* Revert "pkg/typify: empty messages are OtherError (#1531)"
This reverts commit fc1d73ffa9ae193c4cfca4adc194ae43f9360dbb.
* plugin/cache: add failsafeTTL
If we can not see what TTL we should put on a message to be cached, use
5 seconds as minimal TTL. We used to apply the maximum TTL to these
messages.
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 { |