Commit b30109df authored by gluk256's avatar gluk256 Committed by Viktor Trón

swarm/pss: mutex lifecycle fixed (#19045)

parent 8771fbf3
...@@ -228,6 +228,7 @@ func ToP2pMsg(msg []byte) (p2p.Msg, error) { ...@@ -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 ...@@ -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()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment