forked from cerc-io/plugeth
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.
|
||||
// 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) {
|
||||
var ok bool
|
||||
rw := &PssReadWriter{
|
||||
Pss: p.Pss,
|
||||
rw: make(chan p2p.Msg),
|
||||
@ -242,19 +243,21 @@ func (p *Protocol) AddPeer(peer *p2p.Peer, topic Topic, asymmetric bool, key str
|
||||
}
|
||||
if asymmetric {
|
||||
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)
|
||||
}
|
||||
p.Pss.pubKeyPoolMu.Unlock()
|
||||
p.RWPoolMu.Lock()
|
||||
p.pubKeyRWPool[key] = rw
|
||||
p.RWPoolMu.Unlock()
|
||||
} else {
|
||||
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)
|
||||
}
|
||||
p.Pss.symKeyPoolMu.Unlock()
|
||||
p.RWPoolMu.Lock()
|
||||
p.symKeyRWPool[key] = rw
|
||||
p.RWPoolMu.Unlock()
|
||||
|
Loading…
Reference in New Issue
Block a user