Browse Source

always create new tunnel from exploratory pool

pull/1660/head
orignal 4 years ago
parent
commit
a0e545a6f1
  1. 18
      libi2pd/TunnelPool.cpp
  2. 1
      libi2pd/TunnelPool.h

18
libi2pd/TunnelPool.cpp

@ -393,10 +393,14 @@ namespace tunnel @@ -393,10 +393,14 @@ namespace tunnel
}
}
bool TunnelPool::IsExploratory () const
{
return i2p::tunnel::tunnels.GetExploratoryPool () == shared_from_this ();
}
std::shared_ptr<const i2p::data::RouterInfo> TunnelPool::SelectNextHop (std::shared_ptr<const i2p::data::RouterInfo> prevHop, bool reverse) const
{
bool isExploratory = (i2p::tunnel::tunnels.GetExploratoryPool () == shared_from_this ());
auto hop = isExploratory ? i2p::data::netdb.GetRandomRouter (prevHop, reverse):
auto hop = IsExploratory () ? i2p::data::netdb.GetRandomRouter (prevHop, reverse):
i2p::data::netdb.GetHighBandwidthRandomRouter (prevHop, reverse);
if (!hop || hop->GetProfile ()->IsBad ())
@ -521,6 +525,11 @@ namespace tunnel @@ -521,6 +525,11 @@ namespace tunnel
void TunnelPool::RecreateInboundTunnel (std::shared_ptr<InboundTunnel> tunnel)
{
if (IsExploratory ()) // always create new exploratory tunnel
{
CreateInboundTunnel ();
return;
}
auto outboundTunnel = GetNextOutboundTunnel ();
if (!outboundTunnel)
outboundTunnel = tunnels.GetNextOutboundTunnel ();
@ -567,6 +576,11 @@ namespace tunnel @@ -567,6 +576,11 @@ namespace tunnel
void TunnelPool::RecreateOutboundTunnel (std::shared_ptr<OutboundTunnel> tunnel)
{
if (IsExploratory ()) // always create new exploratory tunnel
{
CreateOutboundTunnel ();
return;
}
auto inboundTunnel = GetNextInboundTunnel ();
if (!inboundTunnel)
inboundTunnel = tunnels.GetNextInboundTunnel ();

1
libi2pd/TunnelPool.h

@ -77,6 +77,7 @@ namespace tunnel @@ -77,6 +77,7 @@ namespace tunnel
void ProcessGarlicMessage (std::shared_ptr<I2NPMessage> msg);
void ProcessDeliveryStatus (std::shared_ptr<I2NPMessage> msg);
bool IsExploratory () const;
bool IsActive () const { return m_IsActive; };
void SetActive (bool isActive) { m_IsActive = isActive; };
void DetachTunnels ();

Loading…
Cancel
Save