MCPcopy Create free account
hub / github.com/PurpleI2P/i2pd / GetRestrictedPeer

Method GetRestrictedPeer

libi2pd/Transports.cpp:1306–1337  ·  view source on GitHub ↗

XXX: if routes are not restricted this dies */

Source from the content-addressed store, hash-verified

1304
1305 /** XXX: if routes are not restricted this dies */
1306 std::shared_ptr<const i2p::data::RouterInfo> Transports::GetRestrictedPeer()
1307 {
1308 {
1309 std::lock_guard<std::mutex> l(m_FamilyMutex);
1310 i2p::data::FamilyID fam = 0;
1311 auto sz = m_TrustedFamilies.size();
1312 if(sz > 1)
1313 {
1314 auto it = m_TrustedFamilies.begin ();
1315 std::advance(it, m_Rng() % sz);
1316 fam = *it;
1317 }
1318 else if (sz == 1)
1319 {
1320 fam = m_TrustedFamilies[0];
1321 }
1322 if (fam)
1323 return i2p::data::netdb.GetRandomRouterInFamily(fam);
1324 }
1325 {
1326 std::lock_guard<std::mutex> l(m_TrustedRoutersMutex);
1327 auto sz = m_TrustedRouters.size();
1328 if (sz)
1329 {
1330 auto it = m_TrustedRouters.begin();
1331 if(sz > 1)
1332 std::advance(it, m_Rng() % sz);
1333 return i2p::data::netdb.FindRouter(*it);
1334 }
1335 }
1336 return nullptr;
1337 }
1338
1339 bool Transports::IsTrustedRouter (const i2p::data::IdentHash& ih) const
1340 {

Callers 3

StandardSelectPeersMethod · 0.80
ManageOutboundTunnelsMethod · 0.80
ManageInboundTunnelsMethod · 0.80

Calls 2

FindRouterMethod · 0.80

Tested by

no test coverage detected