From 9e806887a8f9ef63431b28d7dfd0470aa663dd02 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Thu, 3 Dec 2020 14:59:27 -0800 Subject: Don't send 'sendaddrv2' to pre-70016 software Github-Pull: #20564 Rebased-From: c5a89196602e43ebb1cdc9cd4f08d153419c13e1 --- src/net_processing.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/net_processing.cpp') diff --git a/src/net_processing.cpp b/src/net_processing.cpp index c649cf7757..44f6f5d6b6 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -2367,7 +2367,13 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::VERACK)); // Signal ADDRv2 support (BIP155). - m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::SENDADDRV2)); + if (greatest_common_version >= 70016) { + // BIP155 defines addrv2 and sendaddrv2 for all protocol versions, but some + // implementations reject messages they don't know. As a courtesy, don't send + // it to nodes with a version before 70016, as no software is known to support + // BIP155 that doesn't announce at least that protocol version number. + m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::SENDADDRV2)); + } pfrom.nServices = nServices; pfrom.SetAddrLocal(addrMe); -- cgit v1.2.3