From d4246edb8269292789a479b3236a4742532d1eef Mon Sep 17 00:00:00 2001 From: orignal Date: Fri, 23 Feb 2024 11:37:09 -0500 Subject: [PATCH] don't fail last tunnel --- libi2pd/TunnelPool.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libi2pd/TunnelPool.cpp b/libi2pd/TunnelPool.cpp index 898a05bc..04200428 100644 --- a/libi2pd/TunnelPool.cpp +++ b/libi2pd/TunnelPool.cpp @@ -337,7 +337,10 @@ namespace tunnel { it.second.first->SetState (eTunnelStateFailed); std::unique_lock l(m_OutboundTunnelsMutex); - m_OutboundTunnels.erase (it.second.first); + if (m_OutboundTunnels.size () > 1) // don't fail last tunnel + m_OutboundTunnels.erase (it.second.first); + else + it.second.first->SetState (eTunnelStateTestFailed); } else it.second.first->SetState (eTunnelStateTestFailed); @@ -349,7 +352,10 @@ namespace tunnel it.second.second->SetState (eTunnelStateFailed); { std::unique_lock l(m_InboundTunnelsMutex); - m_InboundTunnels.erase (it.second.second); + if (m_InboundTunnels.size () > 1) // don't fail last tunnel + m_InboundTunnels.erase (it.second.second); + else + it.second.first->SetState (eTunnelStateTestFailed); } if (m_LocalDestination) m_LocalDestination->SetLeaseSetUpdated ();