Merge branch 'transport_failsafe' into restricted_routes

This commit is contained in:
Jeff Becker 2016-06-18 09:01:53 -04:00
commit 004a93a841
No known key found for this signature in database
GPG key ID: AB950234D6EA286B
15 changed files with 174 additions and 103 deletions

View file

@ -331,18 +331,14 @@ namespace tunnel
if (m_ExplicitPeers) return SelectExplicitPeers (peers, isInbound);
auto prevHop = i2p::context.GetSharedRouterInfo ();
int numHops = isInbound ? m_NumInboundHops : m_NumOutboundHops;
int firstHop = numHops - 1;
if (i2p::transport::transports.GetNumPeers () > 25)
{
auto r = i2p::transport::transports.GetRandomPeer ();
if (r && !r->GetProfile ()->IsBad ())
{
prevHop = r;
peers.push_back (r->GetRouterIdentity ());
numHops--;
}
}
if(i2p::transport::transports.RoutesRestricted())
{
auto hop = i2p::transport::transports.GetRestrictedPeer();
if(!hop) return false;
peers.push_back(hop->GetRouterIdentity());
prevHop = hop;
}
for (int i = 0; i < numHops; i++)
{
auto hop = SelectNextHop (prevHop);
@ -354,13 +350,6 @@ namespace tunnel
prevHop = hop;
peers.push_back (hop->GetRouterIdentity ());
}
if(i2p::transport::transports.RoutesRestricted())
{
auto r = i2p::transport::transports.GetRestrictedPeer();
/* replace first hop with restricted router */
if(!r) return false;
peers[firstHop] = r->GetRouterIdentity();
}
return true;
}