|
|
@ -12,7 +12,7 @@ namespace tunnel |
|
|
|
{ |
|
|
|
{ |
|
|
|
TunnelPool::TunnelPool (i2p::garlic::GarlicDestination& localDestination, int numHops, int numTunnels): |
|
|
|
TunnelPool::TunnelPool (i2p::garlic::GarlicDestination& localDestination, int numHops, int numTunnels): |
|
|
|
m_LocalDestination (localDestination), m_NumHops (numHops), m_NumTunnels (numTunnels), |
|
|
|
m_LocalDestination (localDestination), m_NumHops (numHops), m_NumTunnels (numTunnels), |
|
|
|
m_IsDeleted (false) |
|
|
|
m_IsActive (true) |
|
|
|
{ |
|
|
|
{ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -27,17 +27,20 @@ namespace tunnel |
|
|
|
std::unique_lock<std::mutex> l(m_InboundTunnelsMutex); |
|
|
|
std::unique_lock<std::mutex> l(m_InboundTunnelsMutex); |
|
|
|
for (auto it: m_InboundTunnels) |
|
|
|
for (auto it: m_InboundTunnels) |
|
|
|
it->SetTunnelPool (nullptr); |
|
|
|
it->SetTunnelPool (nullptr); |
|
|
|
|
|
|
|
m_InboundTunnels.clear (); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
std::unique_lock<std::mutex> l(m_OutboundTunnelsMutex); |
|
|
|
std::unique_lock<std::mutex> l(m_OutboundTunnelsMutex); |
|
|
|
for (auto it: m_OutboundTunnels) |
|
|
|
for (auto it: m_OutboundTunnels) |
|
|
|
it->SetTunnelPool (nullptr); |
|
|
|
it->SetTunnelPool (nullptr); |
|
|
|
|
|
|
|
m_OutboundTunnels.clear (); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
m_Tests.clear (); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void TunnelPool::TunnelCreated (InboundTunnel * createdTunnel) |
|
|
|
void TunnelPool::TunnelCreated (InboundTunnel * createdTunnel) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (m_IsDeleted) return; |
|
|
|
if (!m_IsActive) return; |
|
|
|
{ |
|
|
|
{ |
|
|
|
std::unique_lock<std::mutex> l(m_InboundTunnelsMutex); |
|
|
|
std::unique_lock<std::mutex> l(m_InboundTunnelsMutex); |
|
|
|
m_InboundTunnels.insert (createdTunnel); |
|
|
|
m_InboundTunnels.insert (createdTunnel); |
|
|
@ -61,7 +64,7 @@ namespace tunnel |
|
|
|
|
|
|
|
|
|
|
|
void TunnelPool::TunnelCreated (OutboundTunnel * createdTunnel) |
|
|
|
void TunnelPool::TunnelCreated (OutboundTunnel * createdTunnel) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (m_IsDeleted) return; |
|
|
|
if (!m_IsActive) return; |
|
|
|
std::unique_lock<std::mutex> l(m_OutboundTunnelsMutex); |
|
|
|
std::unique_lock<std::mutex> l(m_OutboundTunnelsMutex); |
|
|
|
m_OutboundTunnels.insert (createdTunnel); |
|
|
|
m_OutboundTunnels.insert (createdTunnel); |
|
|
|
} |
|
|
|
} |
|
|
|