diff --git a/libi2pd/Transports.cpp b/libi2pd/Transports.cpp index 4818d57f..de0e5b5b 100644 --- a/libi2pd/Transports.cpp +++ b/libi2pd/Transports.cpp @@ -131,6 +131,17 @@ namespace transport LogPrint(eLogError, "Transports: Return null DHKeys"); } + void Peer::UpdateParams (std::shared_ptr router) + { + if (router) + { + isHighBandwidth = router->IsHighBandwidth (); + isEligible =(bool)router->GetCompatibleTransports (true) && // reachable + router->GetCongestion () != i2p::data::RouterInfo::eRejectAll && // accepts tunnel + router->IsECIES () && router->GetVersion () >= NETDB_MIN_HIGHBANDWIDTH_VERSION; // not too old + } + } + Transports transports; Transports::Transports (): diff --git a/libi2pd/Transports.h b/libi2pd/Transports.h index 12846aa5..e4526cd5 100644 --- a/libi2pd/Transports.h +++ b/libi2pd/Transports.h @@ -79,12 +79,7 @@ namespace transport nextRouterInfoUpdateTime (ts + PEER_ROUTER_INFO_UPDATE_INTERVAL), isHighBandwidth (false), isEligible (false) { - if (router) - { - isHighBandwidth = router->IsHighBandwidth (); - isEligible = router->IsECIES () && (bool)router->GetCompatibleTransports (true) && // reachable - router->GetCongestion () != i2p::data::RouterInfo::eRejectAll; - } + UpdateParams (router); } void Done () @@ -99,15 +94,11 @@ namespace transport void SetRouter (std::shared_ptr r) { router = r; - if (router) - { - isHighBandwidth = router->IsHighBandwidth (); - isEligible = router->IsECIES () && (bool)router->GetCompatibleTransports (true) && // reachable - router->GetCongestion () != i2p::data::RouterInfo::eRejectAll; - } + UpdateParams (router); } - bool IsConnected () const { return !sessions.empty (); } + bool IsConnected () const { return !sessions.empty (); } + void UpdateParams (std::shared_ptr router); }; const uint64_t SESSION_CREATION_TIMEOUT = 15; // in seconds