From 001322751fbabe49f276ba355fbcc858c423a2b8 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Mon, 21 Mar 2016 11:52:13 +0000 Subject: [PATCH] Don't hold Nameserver lock over call out via isKnownPeer --- nameserver/nameserver.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/nameserver/nameserver.go b/nameserver/nameserver.go index d15ad3a3..806db03b 100644 --- a/nameserver/nameserver.go +++ b/nameserver/nameserver.go @@ -204,12 +204,15 @@ func (n *Nameserver) receiveGossip(msg []byte) (mesh.GossipData, mesh.GossipData } n.Lock() - defer n.Unlock() - + isKnownPeer := n.isKnownPeer + n.Unlock() // Don't hold the lock over call out to code elsewhere gossip.Entries.filter(func(e *Entry) bool { - return n.isKnownPeer(e.Origin) + return isKnownPeer(e.Origin) }) + n.Lock() + defer n.Unlock() + newEntries := n.entries.merge(gossip.Entries) if len(newEntries) > 0 { return &GossipData{Entries: newEntries, Timestamp: now()}, &gossip, nil