swarm/pss: mutex lifecycle fixed (#19045)
This commit is contained in:
parent
8771fbf3c8
commit
b30109df3c
|
@ -228,6 +228,7 @@ func ToP2pMsg(msg []byte) (p2p.Msg, error) {
|
||||||
// to link the peer to.
|
// to link the peer to.
|
||||||
// The key must exist in the pss store prior to adding the peer.
|
// The key must exist in the pss store prior to adding the peer.
|
||||||
func (p *Protocol) AddPeer(peer *p2p.Peer, topic Topic, asymmetric bool, key string) (p2p.MsgReadWriter, error) {
|
func (p *Protocol) AddPeer(peer *p2p.Peer, topic Topic, asymmetric bool, key string) (p2p.MsgReadWriter, error) {
|
||||||
|
var ok bool
|
||||||
rw := &PssReadWriter{
|
rw := &PssReadWriter{
|
||||||
Pss: p.Pss,
|
Pss: p.Pss,
|
||||||
rw: make(chan p2p.Msg),
|
rw: make(chan p2p.Msg),
|
||||||
|
@ -242,19 +243,21 @@ func (p *Protocol) AddPeer(peer *p2p.Peer, topic Topic, asymmetric bool, key str
|
||||||
}
|
}
|
||||||
if asymmetric {
|
if asymmetric {
|
||||||
p.Pss.pubKeyPoolMu.Lock()
|
p.Pss.pubKeyPoolMu.Lock()
|
||||||
if _, ok := p.Pss.pubKeyPool[key]; !ok {
|
_, ok = p.Pss.pubKeyPool[key]
|
||||||
|
p.Pss.pubKeyPoolMu.Unlock()
|
||||||
|
if !ok {
|
||||||
return nil, fmt.Errorf("asym key does not exist: %s", key)
|
return nil, fmt.Errorf("asym key does not exist: %s", key)
|
||||||
}
|
}
|
||||||
p.Pss.pubKeyPoolMu.Unlock()
|
|
||||||
p.RWPoolMu.Lock()
|
p.RWPoolMu.Lock()
|
||||||
p.pubKeyRWPool[key] = rw
|
p.pubKeyRWPool[key] = rw
|
||||||
p.RWPoolMu.Unlock()
|
p.RWPoolMu.Unlock()
|
||||||
} else {
|
} else {
|
||||||
p.Pss.symKeyPoolMu.Lock()
|
p.Pss.symKeyPoolMu.Lock()
|
||||||
if _, ok := p.Pss.symKeyPool[key]; !ok {
|
_, ok = p.Pss.symKeyPool[key]
|
||||||
|
p.Pss.symKeyPoolMu.Unlock()
|
||||||
|
if !ok {
|
||||||
return nil, fmt.Errorf("symkey does not exist: %s", key)
|
return nil, fmt.Errorf("symkey does not exist: %s", key)
|
||||||
}
|
}
|
||||||
p.Pss.symKeyPoolMu.Unlock()
|
|
||||||
p.RWPoolMu.Lock()
|
p.RWPoolMu.Lock()
|
||||||
p.symKeyRWPool[key] = rw
|
p.symKeyRWPool[key] = rw
|
||||||
p.RWPoolMu.Unlock()
|
p.RWPoolMu.Unlock()
|
||||||
|
|
Loading…
Reference in New Issue