|
|
@@ -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) {
|
|
|
n := len(addrs)
|
|
|
cs := make(map[enode.ID]chan bool)
|
|
|
+ var csMu sync.Mutex
|
|
|
|
|
|
srv := func(p *BzzPeer) error {
|
|
|
defer func() {
|
|
|
+ csMu.Lock()
|
|
|
+ defer csMu.Unlock()
|
|
|
if cs[p.ID()] != nil {
|
|
|
close(cs[p.ID()])
|
|
|
}
|
|
|
@@ -99,8 +102,8 @@ func newBzzBaseTesterWithAddrs(prvkey *ecdsa.PrivateKey, addrs [][]byte, spec *p
|
|
|
nodeToAddr := make(map[enode.ID][]byte)
|
|
|
protocol := func(p *p2p.Peer, rw p2p.MsgReadWriter) error {
|
|
|
mu.Lock()
|
|
|
- defer mu.Unlock()
|
|
|
nodeToAddr[p.ID()] = addrs[0]
|
|
|
+ mu.Unlock()
|
|
|
bzzAddr := &BzzAddr{addrs[0], []byte(p.Node().String())}
|
|
|
addrs = addrs[1:]
|
|
|
return srv(&BzzPeer{Peer: protocols.NewPeer(p, rw, spec), BzzAddr: bzzAddr})
|
|
|
@@ -120,10 +123,12 @@ func newBzzBaseTesterWithAddrs(prvkey *ecdsa.PrivateKey, addrs [][]byte, spec *p
|
|
|
}
|
|
|
addr := getENRBzzAddr(nod)
|
|
|
|
|
|
+ csMu.Lock()
|
|
|
for _, node := range s.Nodes {
|
|
|
log.Warn("node", "node", node)
|
|
|
cs[node.ID()] = make(chan bool)
|
|
|
}
|
|
|
+ csMu.Unlock()
|
|
|
|
|
|
var nodeAddrs [][]byte
|
|
|
pt := &bzzTester{
|
|
|
@@ -131,9 +136,11 @@ func newBzzBaseTesterWithAddrs(prvkey *ecdsa.PrivateKey, addrs [][]byte, spec *p
|
|
|
ProtocolTester: s,
|
|
|
cs: cs,
|
|
|
}
|
|
|
+ mu.Lock()
|
|
|
for _, n := range pt.Nodes {
|
|
|
nodeAddrs = append(nodeAddrs, nodeToAddr[n.ID()])
|
|
|
}
|
|
|
+ mu.Unlock()
|
|
|
|
|
|
return pt, nodeAddrs, nil
|
|
|
}
|