XXX: if routes are not restricted this dies */
| 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 | { |
no test coverage detected