swarm/network: fix data race in newBzzBaseTesterWithAddrs

This commit is contained in:
Janos Guljas 2019-04-12 10:25:56 +02:00
parent 9b5b561d65
commit 67c06d9a96

View file

@ -86,9 +86,12 @@ func newBzzBaseTester(n int, prvkey *ecdsa.PrivateKey, spec *protocols.Spec, run
func newBzzBaseTesterWithAddrs(prvkey *ecdsa.PrivateKey, addrs [][]byte, spec *protocols.Spec, run func(*BzzPeer) error) (*bzzTester, [][]byte, error) { func newBzzBaseTesterWithAddrs(prvkey *ecdsa.PrivateKey, addrs [][]byte, spec *protocols.Spec, run func(*BzzPeer) error) (*bzzTester, [][]byte, error) {
n := len(addrs) n := len(addrs)
cs := make(map[enode.ID]chan bool) cs := make(map[enode.ID]chan bool)
var csMu sync.Mutex
srv := func(p *BzzPeer) error { srv := func(p *BzzPeer) error {
defer func() { defer func() {
csMu.Lock()
defer csMu.Unlock()
if cs[p.ID()] != nil { if cs[p.ID()] != nil {
close(cs[p.ID()]) close(cs[p.ID()])
} }
@ -120,10 +123,12 @@ func newBzzBaseTesterWithAddrs(prvkey *ecdsa.PrivateKey, addrs [][]byte, spec *p
} }
addr := getENRBzzAddr(nod) addr := getENRBzzAddr(nod)
csMu.Lock()
for _, node := range s.Nodes { for _, node := range s.Nodes {
log.Warn("node", "node", node) log.Warn("node", "node", node)
cs[node.ID()] = make(chan bool) cs[node.ID()] = make(chan bool)
} }
csMu.Unlock()
var nodeAddrs [][]byte var nodeAddrs [][]byte
pt := &bzzTester{ pt := &bzzTester{