mirror of
https://github.com/PeernetOfficial/core.git
synced 2026-07-19 03:27:50 +01:00
Fix sendAllNetworks: New sequence number per packet
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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++
|
||||
|
||||
Reference in New Issue
Block a user