diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-01-10 18:52:30 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-01-11 12:25:42 +0100 |
commit | b51756462382c5dedba8020646c39fcc7e354ef5 (patch) | |
tree | 370fe64e5251d03b41f2eff42426c8e4b5a1210c /cache/cache.go | |
parent | e4feabdf86b5eef7d98e9de0270d289de0cddf89 (diff) |
Hold lock during entire prefetch to preserve order
Diffstat (limited to 'cache/cache.go')
-rw-r--r-- | cache/cache.go | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/cache/cache.go b/cache/cache.go index f21af5f..5d41bbe 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -152,6 +152,8 @@ func (c *Cache) Reset() { func (c *Cache) prefetch() bool { return c.client != nil } func (c *Cache) refresh(key uint64, old *dns.Msg) { + c.mu.Lock() + defer c.mu.Unlock() q := old.Question[0] msg := dns.Msg{} msg.SetQuestion(q.Name, q.Qtype) @@ -159,8 +161,6 @@ func (c *Cache) refresh(key uint64, old *dns.Msg) { if err != nil { return // Retry on next request } - c.mu.Lock() - defer c.mu.Unlock() if !c.set(key, r) { c.evict(key) } |