serializeAddress should always serialize as IPv6, since it assumes the IP size is 16 bytes (#1720)

This commit is contained in:
Ori Newman 2021-05-13 17:42:59 +03:00 committed by GitHub
parent 50fd86e287
commit b76ca41109
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -243,7 +243,7 @@ func (as *addressStore) serializeAddress(address *address) []byte {
serializedSize := 16 + 2 + 8 + 8 // ipv6 + port + timestamp + connectionFailedCount serializedSize := 16 + 2 + 8 + 8 // ipv6 + port + timestamp + connectionFailedCount
serializedNetAddress := make([]byte, serializedSize) serializedNetAddress := make([]byte, serializedSize)
copy(serializedNetAddress[:], address.netAddress.IP[:]) copy(serializedNetAddress[:], address.netAddress.IP.To16()[:])
binary.LittleEndian.PutUint16(serializedNetAddress[16:], address.netAddress.Port) binary.LittleEndian.PutUint16(serializedNetAddress[16:], address.netAddress.Port)
binary.LittleEndian.PutUint64(serializedNetAddress[18:], uint64(address.netAddress.Timestamp.UnixMilliseconds())) binary.LittleEndian.PutUint64(serializedNetAddress[18:], uint64(address.netAddress.Timestamp.UnixMilliseconds()))
binary.LittleEndian.PutUint64(serializedNetAddress[26:], uint64(address.connectionFailedCount)) binary.LittleEndian.PutUint64(serializedNetAddress[26:], uint64(address.connectionFailedCount))