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