Fix sendAllNetworks: New sequence number per packet

This commit is contained in:
Kleissner
2021-04-20 07:18:46 +02:00
parent 62c4b370fc
commit 8269219cf0
2 changed files with 13 additions and 6 deletions

View File

@@ -204,7 +204,7 @@ func contactArbitraryPeer(publicKey *btcec.PublicKey, addresses []*net.UDPAddr)
}
for _, address := range addresses {
sendAllNetworks(publicKey, &PacketRaw{Command: CommandAnnouncement, Payload: packets[0].raw, Sequence: msgArbitrarySequence(publicKey)}, address)
sendAllNetworks(publicKey, &PacketRaw{Command: CommandAnnouncement, Payload: packets[0].raw}, address)
}
}

View File

@@ -302,13 +302,10 @@ func (peer *PeerInfo) sendConnection(packet *PacketRaw, connection *Connection)
return connection.Network.send(connection.Address.IP, connection.Address.Port, raw)
}
// sendAllNetworks sends a raw packet via all networks
// sendAllNetworks sends a raw packet via all networks. It assigns a new sequence for each sent packet.
func sendAllNetworks(receiverPublicKey *btcec.PublicKey, packet *PacketRaw, remote *net.UDPAddr) (err error) {
var raw []byte
packet.Protocol = ProtocolVersion
raw, err := PacketEncrypt(peerPrivateKey, receiverPublicKey, packet)
if err != nil {
return err
}
successCount := 0
@@ -322,6 +319,11 @@ func sendAllNetworks(receiverPublicKey *btcec.PublicKey, packet *PacketRaw, remo
continue
}
packet.Sequence = msgArbitrarySequence(receiverPublicKey)
if raw, err = PacketEncrypt(peerPrivateKey, receiverPublicKey, packet); err != nil {
return err
}
err = network.send(remote.IP, remote.Port, raw)
if err == nil {
successCount++
@@ -334,6 +336,11 @@ func sendAllNetworks(receiverPublicKey *btcec.PublicKey, packet *PacketRaw, remo
continue
}
packet.Sequence = msgArbitrarySequence(receiverPublicKey)
if raw, err = PacketEncrypt(peerPrivateKey, receiverPublicKey, packet); err != nil {
return err
}
err = network.send(remote.IP, remote.Port, raw)
if err == nil {
successCount++