Browse Source

find SSU2 address by address type

pull/1752/head
orignal 3 years ago
parent
commit
30b83414ef
  1. 6
      libi2pd/RouterInfo.cpp
  2. 2
      libi2pd/RouterInfo.h
  3. 2
      libi2pd/SSU2.cpp

6
libi2pd/RouterInfo.cpp

@ -896,13 +896,13 @@ namespace data
}); });
} }
std::shared_ptr<const RouterInfo::Address> RouterInfo::GetSSU2AddressWithStaticKey (const uint8_t * key) const std::shared_ptr<const RouterInfo::Address> RouterInfo::GetSSU2AddressWithStaticKey (const uint8_t * key, bool isV6) const
{ {
if (!key) return nullptr; if (!key) return nullptr;
return GetAddress ( return GetAddress (
[key](std::shared_ptr<const RouterInfo::Address> address)->bool [key, isV6](std::shared_ptr<const RouterInfo::Address> address)->bool
{ {
return address->IsSSU2 () && !memcmp (address->s, key, 32); return address->IsSSU2 () && !memcmp (address->s, key, 32) && address->IsV6 () == isV6;
}); });
} }

2
libi2pd/RouterInfo.h

@ -184,7 +184,7 @@ namespace data
virtual void ClearProperties () {}; virtual void ClearProperties () {};
Addresses& GetAddresses () { return *m_Addresses; }; // should be called for local RI only, otherwise must return shared_ptr Addresses& GetAddresses () { return *m_Addresses; }; // should be called for local RI only, otherwise must return shared_ptr
std::shared_ptr<const Address> GetNTCP2AddressWithStaticKey (const uint8_t * key) const; std::shared_ptr<const Address> GetNTCP2AddressWithStaticKey (const uint8_t * key) const;
std::shared_ptr<const Address> GetSSU2AddressWithStaticKey (const uint8_t * key) const; std::shared_ptr<const Address> GetSSU2AddressWithStaticKey (const uint8_t * key, bool isV6) const;
std::shared_ptr<const Address> GetPublishedNTCP2V4Address () const; std::shared_ptr<const Address> GetPublishedNTCP2V4Address () const;
std::shared_ptr<const Address> GetPublishedNTCP2V6Address () const; std::shared_ptr<const Address> GetPublishedNTCP2V6Address () const;
std::shared_ptr<const Address> GetSSUAddress (bool v4only = true) const; std::shared_ptr<const Address> GetSSUAddress (bool v4only = true) const;

2
libi2pd/SSU2.cpp

@ -384,7 +384,7 @@ namespace transport
return false; return false;
} }
SetRemoteIdentity (ri->GetRouterIdentity ()); SetRemoteIdentity (ri->GetRouterIdentity ());
m_Address = ri->GetSSU2AddressWithStaticKey (S); m_Address = ri->GetSSU2AddressWithStaticKey (S, m_RemoteEndpoint.address ().is_v6 ());
if (!m_Address) if (!m_Address)
{ {
LogPrint (eLogError, "SSU2: No SSU2 address with static key found in SessionConfirmed"); LogPrint (eLogError, "SSU2: No SSU2 address with static key found in SessionConfirmed");

Loading…
Cancel
Save