Browse Source

select ipv6 random introducer

pull/1656/head
orignal 4 years ago
parent
commit
060e30d283
  1. 6
      libi2pd/NetDb.cpp
  2. 2
      libi2pd/NetDb.hpp
  3. 4
      libi2pd/SSU.cpp

6
libi2pd/NetDb.cpp

@ -1168,12 +1168,12 @@ namespace data @@ -1168,12 +1168,12 @@ namespace data
});
}
std::shared_ptr<const RouterInfo> NetDb::GetRandomIntroducer () const
std::shared_ptr<const RouterInfo> NetDb::GetRandomIntroducer (bool v4) const
{
return GetRandomRouter (
[](std::shared_ptr<const RouterInfo> router)->bool
[v4](std::shared_ptr<const RouterInfo> router)->bool
{
return router->IsIntroducer (true) && !router->IsHidden () && !router->IsFloodfill (); // floodfills don't send relay tag
return router->IsIntroducer (v4) && !router->IsHidden () && !router->IsFloodfill (); // floodfills don't send relay tag
});
}

2
libi2pd/NetDb.hpp

@ -87,7 +87,7 @@ namespace data @@ -87,7 +87,7 @@ namespace data
std::shared_ptr<const RouterInfo> GetHighBandwidthRandomRouter (std::shared_ptr<const RouterInfo> compatibleWith, bool reverse) const;
std::shared_ptr<const RouterInfo> GetRandomPeerTestRouter (bool v4, const std::set<IdentHash>& excluded) const;
std::shared_ptr<const RouterInfo> GetRandomSSUV6Router () const; // TODO: change to v6 peer test later
std::shared_ptr<const RouterInfo> GetRandomIntroducer () const;
std::shared_ptr<const RouterInfo> GetRandomIntroducer (bool v4) const;
std::shared_ptr<const RouterInfo> GetClosestFloodfill (const IdentHash& destination, const std::set<IdentHash>& excluded, bool closeThanUsOnly = false) const;
std::vector<IdentHash> GetClosestFloodfills (const IdentHash& destination, size_t num,
std::set<IdentHash>& excluded, bool closeThanUsOnly = false) const;

4
libi2pd/SSU.cpp

@ -794,10 +794,10 @@ namespace transport @@ -794,10 +794,10 @@ namespace transport
std::set<std::shared_ptr<const i2p::data::RouterInfo> > requested;
for (auto i = introducers.size (); i < SSU_MAX_NUM_INTRODUCERS; i++)
{
auto introducer = i2p::data::netdb.GetRandomIntroducer ();
auto introducer = i2p::data::netdb.GetRandomIntroducer (v4);
if (introducer && !requested.count (introducer)) // not requested already
{
auto address = introducer->GetSSUAddress (true); // v4
auto address = v4 ? introducer->GetSSUAddress (true) : introducer->GetSSUV6Address ();
if (address && !address->host.is_unspecified ())
{
boost::asio::ip::udp::endpoint ep (address->host, address->port);

Loading…
Cancel
Save