mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-03-07 06:09:42 +00:00
Compare commits
3 Commits
ed2f92f49c
...
cd2cf62373
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd2cf62373 | ||
|
|
3d19fa12f6 | ||
|
|
6e639f0e6a |
@@ -2,6 +2,7 @@
|
|||||||
Description=I2P Router written in C++
|
Description=I2P Router written in C++
|
||||||
Documentation=man:i2pd(1) https://i2pd.readthedocs.io/en/latest/
|
Documentation=man:i2pd(1) https://i2pd.readthedocs.io/en/latest/
|
||||||
After=network.target
|
After=network.target
|
||||||
|
Wants=yggdrasil.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
User=i2pd
|
User=i2pd
|
||||||
|
|||||||
@@ -351,10 +351,13 @@ namespace tunnel
|
|||||||
{
|
{
|
||||||
it.second.first->SetState (eTunnelStateFailed);
|
it.second.first->SetState (eTunnelStateFailed);
|
||||||
std::unique_lock<std::mutex> l(m_OutboundTunnelsMutex);
|
std::unique_lock<std::mutex> l(m_OutboundTunnelsMutex);
|
||||||
if (m_OutboundTunnels.size () > 1 || m_NumOutboundTunnels <= 1) // don't fail last tunnel
|
if (m_OutboundTunnels.size () > 1) // don't fail last tunnel
|
||||||
m_OutboundTunnels.erase (it.second.first);
|
m_OutboundTunnels.erase (it.second.first);
|
||||||
else
|
else
|
||||||
|
{
|
||||||
it.second.first->SetState (eTunnelStateTestFailed);
|
it.second.first->SetState (eTunnelStateTestFailed);
|
||||||
|
CreateOutboundTunnel (); // create new tunnel immediately because last one failed
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (it.second.first->GetState () != eTunnelStateExpiring)
|
else if (it.second.first->GetState () != eTunnelStateExpiring)
|
||||||
it.second.first->SetState (eTunnelStateTestFailed);
|
it.second.first->SetState (eTunnelStateTestFailed);
|
||||||
@@ -368,13 +371,16 @@ namespace tunnel
|
|||||||
bool failed = false;
|
bool failed = false;
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> l(m_InboundTunnelsMutex);
|
std::unique_lock<std::mutex> l(m_InboundTunnelsMutex);
|
||||||
if (m_InboundTunnels.size () > 1 || m_NumInboundTunnels <= 1) // don't fail last tunnel
|
if (m_InboundTunnels.size () > 1) // don't fail last tunnel
|
||||||
{
|
{
|
||||||
m_InboundTunnels.erase (it.second.second);
|
m_InboundTunnels.erase (it.second.second);
|
||||||
failed = true;
|
failed = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
it.second.second->SetState (eTunnelStateTestFailed);
|
it.second.second->SetState (eTunnelStateTestFailed);
|
||||||
|
CreateInboundTunnel (); // create new tunnel immediately because last one failed
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (failed && m_LocalDestination)
|
if (failed && m_LocalDestination)
|
||||||
m_LocalDestination->SetLeaseSetUpdated (true);
|
m_LocalDestination->SetLeaseSetUpdated (true);
|
||||||
|
|||||||
Reference in New Issue
Block a user