From 2ab597be20c57ef4376e8c7b423c8eb6d3225330 Mon Sep 17 00:00:00 2001 From: orignal Date: Sat, 11 Oct 2014 09:47:24 -0400 Subject: [PATCH] detach tunnles from poll --- Tunnel.cpp | 6 +++++- TunnelPool.cpp | 9 +++++++-- TunnelPool.h | 3 ++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Tunnel.cpp b/Tunnel.cpp index a372452c..04ed9bdc 100644 --- a/Tunnel.cpp +++ b/Tunnel.cpp @@ -297,7 +297,11 @@ namespace tunnel void Tunnels::DeleteTunnelPool (TunnelPool * pool) { - if (pool) pool->SetDeleted (); + if (pool) + { + pool->DetachTunnels (); + pool->SetDeleted (); + } } void Tunnels::AddTransitTunnel (TransitTunnel * tunnel) diff --git a/TunnelPool.cpp b/TunnelPool.cpp index c95f6fb3..af720231 100644 --- a/TunnelPool.cpp +++ b/TunnelPool.cpp @@ -17,6 +17,11 @@ namespace tunnel } TunnelPool::~TunnelPool () + { + DetachTunnels (); + } + + void TunnelPool::DetachTunnels () { { std::unique_lock l(m_InboundTunnelsMutex); @@ -28,8 +33,8 @@ namespace tunnel for (auto it: m_OutboundTunnels) it->SetTunnelPool (nullptr); } - } - + } + void TunnelPool::TunnelCreated (InboundTunnel * createdTunnel) { { diff --git a/TunnelPool.h b/TunnelPool.h index 816decf3..0c680aa4 100644 --- a/TunnelPool.h +++ b/TunnelPool.h @@ -49,7 +49,8 @@ namespace tunnel void ProcessDeliveryStatus (I2NPMessage * msg); bool IsDeleted () const { return m_IsDeleted; }; - void SetDeleted () { m_IsDeleted = true; } + void SetDeleted () { m_IsDeleted = true; }; + void DetachTunnels (); private: