mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-28 11:47:48 +02:00
select high bandwidth routers for client tunnels
This commit is contained in:
parent
c4ec2ea297
commit
79d2f69837
4 changed files with 42 additions and 17 deletions
|
@ -197,6 +197,15 @@ namespace tunnel
|
|||
i2p::garlic::routing.PostI2NPMsg (msg);
|
||||
}
|
||||
|
||||
const i2p::data::RouterInfo * TunnelPool::SelectNextHop (const i2p::data::RouterInfo * prevHop) const
|
||||
{
|
||||
auto hop = m_NumHops >= 3 ? i2p::data::netdb.GetHighBandwidthRandomRouter (prevHop) :
|
||||
i2p::data::netdb.GetRandomRouter (prevHop);
|
||||
if (!hop)
|
||||
hop = i2p::data::netdb.GetRandomRouter ();
|
||||
return hop;
|
||||
}
|
||||
|
||||
void TunnelPool::CreateInboundTunnel ()
|
||||
{
|
||||
OutboundTunnel * outboundTunnel = GetNextOutboundTunnel ();
|
||||
|
@ -219,7 +228,7 @@ namespace tunnel
|
|||
}
|
||||
for (int i = 0; i < numHops; i++)
|
||||
{
|
||||
auto hop = i2p::data::netdb.GetRandomRouter (prevHop);
|
||||
auto hop = SelectNextHop (prevHop);
|
||||
prevHop = hop;
|
||||
hops.push_back (hop);
|
||||
}
|
||||
|
@ -251,7 +260,7 @@ namespace tunnel
|
|||
std::vector<const i2p::data::RouterInfo *> hops;
|
||||
for (int i = 0; i < m_NumHops; i++)
|
||||
{
|
||||
auto hop = i2p::data::netdb.GetRandomRouter (prevHop);
|
||||
auto hop = SelectNextHop (prevHop);
|
||||
prevHop = hop;
|
||||
hops.push_back (hop);
|
||||
}
|
||||
|
@ -263,7 +272,7 @@ namespace tunnel
|
|||
else
|
||||
LogPrint ("Can't create outbound tunnel. No inbound tunnels found");
|
||||
}
|
||||
|
||||
|
||||
void TunnelPool::RecreateOutboundTunnel (OutboundTunnel * tunnel)
|
||||
{
|
||||
InboundTunnel * inboundTunnel = GetNextInboundTunnel ();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue