diff options
author | 2016-11-07 16:27:50 +0000 | |
---|---|---|
committer | 2016-11-07 16:27:50 +0000 | |
commit | e89c4b5c2863cdc889ac756185a15d1e959ddcdc (patch) | |
tree | c11d805316fdc54c1de4c8ee009180da9035a601 /middleware/cache/cache.go | |
parent | 4318dfbf02ca4248dab29fc4fb730e2515a05754 (diff) | |
download | coredns-e89c4b5c2863cdc889ac756185a15d1e959ddcdc.tar.gz coredns-e89c4b5c2863cdc889ac756185a15d1e959ddcdc.tar.zst coredns-e89c4b5c2863cdc889ac756185a15d1e959ddcdc.zip |
middleware/cache: only cache query and responses (#397)
Extent typify to check the transfers, dynamic updates and notifies.
Extend *cache* to not put these in the cache.
Fixes #393
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 |