diff options
author | Jon Atack <jon@atack.com> | 2021-05-25 01:35:48 +0200 |
---|---|---|
committer | Jon Atack <jon@atack.com> | 2021-06-03 13:36:42 +0200 |
commit | 4192a74413907717d6173e393724b931f2225dd9 (patch) | |
tree | c3e911dbd53a9f65f720d69d5d644efb7ee45564 /src/netaddress.cpp | |
parent | 1d631e956fffbbc7891ed40be4fd39aeff036c52 (diff) |
p2p: ignore torv2-in-ipv6 addresses in SetLegacyIPv6()
Diffstat (limited to 'src/netaddress.cpp')
-rw-r--r-- | src/netaddress.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/netaddress.cpp b/src/netaddress.cpp index 5d1f3e2652..10b482fab3 100644 --- a/src/netaddress.cpp +++ b/src/netaddress.cpp @@ -146,9 +146,12 @@ void CNetAddr::SetLegacyIPv6(Span<const uint8_t> ipv6) m_net = NET_IPV4; skip = sizeof(IPV4_IN_IPV6_PREFIX); } else if (HasPrefix(ipv6, TORV2_IN_IPV6_PREFIX)) { - // TORv2-in-IPv6 - m_net = NET_ONION; - skip = sizeof(TORV2_IN_IPV6_PREFIX); + // TORv2-in-IPv6 (unsupported). Unserialize as !IsValid(), thus ignoring them. + // Mimic a default-constructed CNetAddr object which is !IsValid() and thus + // will not be gossiped, but continue reading next addresses from the stream. + m_net = NET_IPV6; + m_addr.assign(ADDR_IPV6_SIZE, 0x0); + return; } else if (HasPrefix(ipv6, INTERNAL_IN_IPV6_PREFIX)) { // Internal-in-IPv6 m_net = NET_INTERNAL; |