mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
cmd/swarm/swarm-smoke-pss: don't set peer pubkey if a node already knows it
This commit is contained in:
parent
c91f253a54
commit
ade508a579
1 changed files with 32 additions and 9 deletions
|
|
@ -42,10 +42,26 @@ type pssNode struct {
|
||||||
hostIdx int
|
hostIdx int
|
||||||
addr []byte
|
addr []byte
|
||||||
pubkey string
|
pubkey string
|
||||||
|
peerPubKeys map[string]bool
|
||||||
client *rpc.Client
|
client *rpc.Client
|
||||||
deregisterFunc func()
|
deregisterFunc func()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *pssNode) addPeerPublicKey(peer *pssNode, topic pss.Topic) error {
|
||||||
|
err := n.client.Call(nil, "pss_setPeerPublicKey", peer.pubkey, topic, hexutil.Encode(peer.addr))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("error setting receivers public key on the sender side", "err", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
n.peerPubKeys[peer.pubkey] = true
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *pssNode) knowsPeerPublicKey(peer *pssNode) bool {
|
||||||
|
_, ok := n.peerPubKeys[peer.pubkey]
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
type pssSession struct {
|
type pssSession struct {
|
||||||
topic pss.Topic
|
topic pss.Topic
|
||||||
msgC chan pss.APIMsg
|
msgC chan pss.APIMsg
|
||||||
|
|
@ -198,8 +214,9 @@ func pssSetup() *pssSession {
|
||||||
&pssNode{
|
&pssNode{
|
||||||
hostIdx: i,
|
hostIdx: i,
|
||||||
addr: []byte(addr),
|
addr: []byte(addr),
|
||||||
client: rpcClient,
|
|
||||||
pubkey: pubkey,
|
pubkey: pubkey,
|
||||||
|
peerPubKeys: make(map[string]bool),
|
||||||
|
client: rpcClient,
|
||||||
deregisterFunc: dFn,
|
deregisterFunc: dFn,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
@ -317,16 +334,22 @@ func (s *pssSession) sendRawMessage(sender *pssNode, receiver *pssNode, msg []by
|
||||||
func (s *pssSession) sendAsymMessage(sender *pssNode, receiver *pssNode, msg []byte) error {
|
func (s *pssSession) sendAsymMessage(sender *pssNode, receiver *pssNode, msg []byte) error {
|
||||||
|
|
||||||
// share public keys between nodes
|
// share public keys between nodes
|
||||||
err := sender.client.Call(nil, "pss_setPeerPublicKey", receiver.pubkey, s.topic, hexutil.Encode(receiver.addr))
|
if !sender.knowsPeerPublicKey(receiver) {
|
||||||
if err != nil {
|
err := sender.addPeerPublicKey(receiver, s.topic)
|
||||||
log.Error("error setting receivers public key on the sender side", "err", err)
|
if err != nil {
|
||||||
return err
|
log.Error("error setting receivers public key on the sender side", "err", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
err = receiver.client.Call(nil, "pss_setPeerPublicKey", sender.pubkey, s.topic, hexutil.Encode(sender.addr))
|
|
||||||
if err != nil {
|
if !receiver.knowsPeerPublicKey(sender) {
|
||||||
log.Error("error setting senders public key on the receiver side", "err", err)
|
err := receiver.addPeerPublicKey(sender, s.topic)
|
||||||
return err
|
if err != nil {
|
||||||
|
log.Error("error setting senders public key on the receiver side", "err", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// send asym message
|
// send asym message
|
||||||
return sender.client.Call(nil, "pss_sendAsym", receiver.pubkey, s.topic, hexutil.Encode(msg))
|
return sender.client.Call(nil, "pss_sendAsym", receiver.pubkey, s.topic, hexutil.Encode(msg))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue