aboutsummaryrefslogtreecommitdiff
path: root/middleware/cache/handler.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2017-06-26 07:44:25 -0700
committerGravatar GitHub <noreply@github.com> 2017-06-26 07:44:25 -0700
commitda5880a273311c90b4abfd16f07ac2d2e4b4a5c7 (patch)
treede204b2349238189330741c96fa6546b0d9c4ebe /middleware/cache/handler.go
parentea90702bfc8a8589a15213bd5dcf58b2a9af758b (diff)
downloadcoredns-da5880a273311c90b4abfd16f07ac2d2e4b4a5c7.tar.gz
coredns-da5880a273311c90b4abfd16f07ac2d2e4b4a5c7.tar.zst
coredns-da5880a273311c90b4abfd16f07ac2d2e4b4a5c7.zip
middleware/cache: fix race (#757)
While adding a parallel performance benchmark I stumbled on a race condition (another reason to add performance benchmarks!), so this PR makes sure the msg is created in a race free manor and adds the parallel benchmark.
Diffstat (limited to 'middleware/cache/handler.go')
-rw-r--r--middleware/cache/handler.go1
1 files changed, 1 insertions, 0 deletions
diff --git a/middleware/cache/handler.go b/middleware/cache/handler.go
index 520b23767..ce3df2f75 100644
--- a/middleware/cache/handler.go
+++ b/middleware/cache/handler.go
@@ -29,6 +29,7 @@ func (c *Cache) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg)
i, ttl := c.get(now, qname, qtype, do)
if i != nil && ttl > 0 {
resp := i.toMsg(r)
+
state.SizeAndDo(resp)
resp, _ = state.Scrub(resp)
w.WriteMsg(resp)