diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 1202eaf1525..d7bfaed8798 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -5521,11 +5521,13 @@ void PeerManagerImpl::MaybeSendAddr(CNode& node, Peer& peer, std::chrono::micros // Send the initial self-announcement in its own message. This makes sure // rate-limiting with limited start-tokens doesn't ignore it if the first // message ends up containing multiple addresses. - std::vector self_announcement {local_addr}; - if (peer.m_wants_addrv2) { - MakeAndPushMessage(node, NetMsgType::ADDRV2, CAddress::V2_NETWORK(self_announcement)); - } else { - MakeAndPushMessage(node, NetMsgType::ADDR, CAddress::V1_NETWORK(self_announcement)); + if (IsAddrCompatible(peer, local_addr)) { + std::vector self_announcement{local_addr}; + if (peer.m_wants_addrv2) { + MakeAndPushMessage(node, NetMsgType::ADDRV2, CAddress::V2_NETWORK(self_announcement)); + } else { + MakeAndPushMessage(node, NetMsgType::ADDR, CAddress::V1_NETWORK(self_announcement)); + } } } else { // All later self-announcements are sent together with the other addresses.