Browse Source

more precise compatibility check

pull/1641/head
orignal 4 years ago
parent
commit
1b8da90cbb
  1. 13
      libi2pd/RouterInfo.cpp
  2. 4
      libi2pd/RouterInfo.h

13
libi2pd/RouterInfo.cpp

@ -1131,9 +1131,16 @@ namespace data @@ -1131,9 +1131,16 @@ namespace data
return (bool)GetAddress (
[commonTransports](std::shared_ptr<const RouterInfo::Address> address)->bool
{
// TODO:check v4 and v6 separately based on caps
if ((commonTransports & (eNTCP2V4 | eNTCP2V6)) && address->IsPublishedNTCP2 ()) return true;
if ((commonTransports & (eSSUV4 | eSSUV6)) && address->IsReachableSSU ()) return true;
if (address->IsPublishedNTCP2 ())
{
if ((commonTransports & eNTCP2V4) && address->IsV4 ()) return true;
if ((commonTransports & eNTCP2V6) && address->IsV6 ()) return true;
}
else if (address->IsReachableSSU ())
{
if ((commonTransports & eSSUV4) && address->IsV4 ()) return true;
if ((commonTransports & eSSUV6) && address->IsV6 ()) return true;
}
return false;
});
}

4
libi2pd/RouterInfo.h

@ -130,8 +130,8 @@ namespace data @@ -130,8 +130,8 @@ namespace data
bool IsCompatible (const boost::asio::ip::address& other) const
{
return (host.is_v4 () && other.is_v4 ()) ||
(host.is_v6 () && other.is_v6 ());
return (IsV4 () && other.is_v4 ()) ||
(IsV6 () && other.is_v6 ());
}
bool operator==(const Address& other) const

Loading…
Cancel
Save