diff options
author | 2017-06-26 07:44:25 -0700 | |
---|---|---|
committer | 2017-06-26 07:44:25 -0700 | |
commit | da5880a273311c90b4abfd16f07ac2d2e4b4a5c7 (patch) | |
tree | de204b2349238189330741c96fa6546b0d9c4ebe /middleware/cache/handler.go | |
parent | ea90702bfc8a8589a15213bd5dcf58b2a9af758b (diff) | |
download | coredns-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.go | 1 |
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) |