|
|
@ -290,6 +290,7 @@ namespace tunnel |
|
|
|
TunnelPool * Tunnels::CreateTunnelPool (i2p::data::LocalDestination& localDestination, int numHops) |
|
|
|
TunnelPool * Tunnels::CreateTunnelPool (i2p::data::LocalDestination& localDestination, int numHops) |
|
|
|
{ |
|
|
|
{ |
|
|
|
auto pool = new TunnelPool (localDestination, numHops); |
|
|
|
auto pool = new TunnelPool (localDestination, numHops); |
|
|
|
|
|
|
|
std::unique_lock<std::mutex> l(m_PoolsMutex); |
|
|
|
m_Pools[pool->GetIdentHash ()] = pool; |
|
|
|
m_Pools[pool->GetIdentHash ()] = pool; |
|
|
|
return pool; |
|
|
|
return pool; |
|
|
|
} |
|
|
|
} |
|
|
@ -298,6 +299,7 @@ namespace tunnel |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (pool) |
|
|
|
if (pool) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
std::unique_lock<std::mutex> l(m_PoolsMutex); |
|
|
|
m_Pools.erase (pool->GetIdentHash ()); |
|
|
|
m_Pools.erase (pool->GetIdentHash ()); |
|
|
|
delete pool; |
|
|
|
delete pool; |
|
|
|
} |
|
|
|
} |
|
|
@ -524,6 +526,7 @@ namespace tunnel |
|
|
|
|
|
|
|
|
|
|
|
void Tunnels::ManageTunnelPools () |
|
|
|
void Tunnels::ManageTunnelPools () |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
std::unique_lock<std::mutex> l(m_PoolsMutex); |
|
|
|
for (auto& it: m_Pools) |
|
|
|
for (auto& it: m_Pools) |
|
|
|
{ |
|
|
|
{ |
|
|
|
it.second->CreateTunnels (); |
|
|
|
it.second->CreateTunnels (); |
|
|
|