message: refactor: add IsAddrCompatible() to CNode
diff: @@ -1186,18 +1186,23 @@ public:
  m_addr_known->insert(_addr.GetKey());
  }
  - void PushAddress(const CAddress& _addr, FastRandomContext &insecure_rand)
  + /**
  + * Whether the peer supports the address. For example, a peer that does not
  + * implement BIP155 cannot receive Tor v3 addresses because it requires
  + * ADDRv2 (BIP155) encoding.
  + */
  + bool IsAddrCompatible(const CAddress& addr) const
  {
  - // Whether the peer supports the address in `_addr`. For example,
  - // nodes that do not implement BIP155 cannot receive Tor v3 addresses
  - // because they require ADDRv2 (BIP155) encoding.
  - const bool addr_format_supported = m_wants_addrv2 || _addr.IsAddrV1Compatible();
  + return m_wants_addrv2 || addr.IsAddrV1Compatible();
  + }
  + void PushAddress(const CAddress& _addr, FastRandomContext &insecure_rand)
  + {
  // Known checking here is only to save space from duplicates.
  // SendMessages will filter it again for knowns that were added
  // after addresses were pushed.
  assert(m_addr_known);
  - if (_addr.IsValid() && !m_addr_known->contains(_addr.GetKey()) && addr_format_supported) {
  + if (_addr.IsValid() && !m_addr_known->contains(_addr.GetKey()) && IsAddrCompatible(_addr)) {
  if (vAddrToSend.size() >= MAX_ADDR_TO_SEND) {
  vAddrToSend[insecure_rand.randrange(vAddrToSend.size())] = _addr;
  } else {
  