diff --git a/TunnelPool.cpp b/TunnelPool.cpp index ccd4c12c..ea7928eb 100644 --- a/TunnelPool.cpp +++ b/TunnelPool.cpp @@ -215,15 +215,6 @@ namespace tunnel void TunnelPool::CreateTunnels () { int num = 0; - { - std::unique_lock l(m_InboundTunnelsMutex); - for (const auto& it : m_InboundTunnels) - if (it->IsEstablished ()) num++; - } - for (int i = num; i < m_NumInboundTunnels; i++) - CreateInboundTunnel (); - - num = 0; { std::unique_lock l(m_OutboundTunnelsMutex); for (const auto& it : m_OutboundTunnels) @@ -231,6 +222,18 @@ namespace tunnel } for (int i = num; i < m_NumOutboundTunnels; i++) CreateOutboundTunnel (); + + num = 0; + { + std::unique_lock l(m_InboundTunnelsMutex); + for (const auto& it : m_InboundTunnels) + if (it->IsEstablished ()) num++; + } + for (int i = num; i < m_NumInboundTunnels; i++) + CreateInboundTunnel (); + + if (num > 0 && m_NumInboundHops <= 0 && m_LocalDestination) // zero hops IB + m_LocalDestination->SetLeaseSetUpdated (); // update LeaseSet immediately } void TunnelPool::TestTunnels ()