fix: handle delay being nil

This commit is contained in:
Derrick Hammer 2024-01-08 10:51:38 -05:00
parent b41c763be8
commit 17d7eda377
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
1 changed files with 38 additions and 3 deletions

View File

@ -180,10 +180,15 @@ func (p *P2PImpl) ConnectToNode(connectionUris []*url.URL, retried bool) error {
p.logger.Error("failed to connect", zap.String("node", connectionUri.String()), zap.Error(err)) p.logger.Error("failed to connect", zap.String("node", connectionUri.String()), zap.Error(err))
delay := *p.reconnectDelay.GetInt(idString) delay := p.reconnectDelay.GetInt(idString)
p.reconnectDelay.PutInt(idString, delay*2) if delay == nil {
tmp := 1
delay = &tmp
}
delayDeref := *delay
p.reconnectDelay.PutInt(idString, delayDeref*2)
time.Sleep(time.Duration(delay) * time.Second) time.Sleep(time.Duration(delayDeref) * time.Second)
return p.ConnectToNode(connectionUris, retried) return p.ConnectToNode(connectionUris, retried)
} }
@ -339,3 +344,33 @@ func (p *P2PImpl) SignMessageSimple(message []byte) ([]byte, error) {
return result, nil return result, nil
} }
func (p *P2PImpl) AddPeer(peer net.Peer) error {
peerId, err := peer.Id().ToString()
if err != nil {
return err
}
p.peers.Put(peerId, peer)
p.reconnectDelay.Put(peerId, 1)
return nil
}
func (p *P2PImpl) SendPublicPeersToPeer(peer net.Peer, peersToSend []net.Peer) error {
announceRequest := signed.NewAnnounceRequest(peer, peersToSend)
message, err := msgpack.Marshal(announceRequest)
if err != nil {
return err
}
signedMessage, err := p.SignMessageSimple(message)
if err != nil {
return err
}
err = peer.SendMessage(signedMessage)
return nil
}