aboutsummaryrefslogtreecommitdiff
path: root/plugin/cache
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/cache')
-rw-r--r--plugin/cache/cache.go7
-rw-r--r--plugin/cache/cache_test.go11
-rw-r--r--plugin/cache/item.go5
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 {