diff options
Diffstat (limited to 'middleware/cache/cache.go')
-rw-r--r-- | middleware/cache/cache.go | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/middleware/cache/cache.go b/middleware/cache/cache.go index d17253c38..a1db2039e 100644 --- a/middleware/cache/cache.go +++ b/middleware/cache/cache.go @@ -29,13 +29,16 @@ type Cache struct { pttl time.Duration } -// Return key under which we store the item. +// Return key under which we store the item. The empty string is returned +// when we don't want to cache the message. Currently we do not cache Truncated, errors +// zone transfers or dynamic update messages. func key(m *dns.Msg, t response.Type, do bool) string { + // We don't store truncated responses. if m.Truncated { - // TODO(miek): wise to store truncated responses? return "" } - if t == response.OtherError { + // Nor errors or Meta or Update + if t == response.OtherError || t == response.Meta || t == response.Update { return "" } @@ -65,6 +68,7 @@ func (c *ResponseWriter) WriteMsg(res *dns.Msg) error { do = opt.Do() } + // key returns empty string for anything we don't want to cache. key := key(res, mt, do) duration := c.pttl |