aboutsummaryrefslogtreecommitdiff
path: root/src/net.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net.cpp')
-rw-r--r--src/net.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/net.cpp b/src/net.cpp
index fecb4205ff..09a3d8617a 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -2928,6 +2928,13 @@ void CConnman::ThreadI2PAcceptIncoming()
bool advertising_listen_addr = false;
i2p::Connection conn;
+ auto SleepOnFailure = [&]() {
+ interruptNet.sleep_for(err_wait);
+ if (err_wait < err_wait_cap) {
+ err_wait += 1s;
+ }
+ };
+
while (!interruptNet) {
if (!m_i2p_sam_session->Listen(conn)) {
@@ -2935,12 +2942,7 @@ void CConnman::ThreadI2PAcceptIncoming()
RemoveLocal(conn.me);
advertising_listen_addr = false;
}
-
- interruptNet.sleep_for(err_wait);
- if (err_wait < err_wait_cap) {
- err_wait *= 2;
- }
-
+ SleepOnFailure();
continue;
}
@@ -2950,11 +2952,14 @@ void CConnman::ThreadI2PAcceptIncoming()
}
if (!m_i2p_sam_session->Accept(conn)) {
+ SleepOnFailure();
continue;
}
CreateNodeFromAcceptedSocket(std::move(conn.sock), NetPermissionFlags::None,
CAddress{conn.me, NODE_NONE}, CAddress{conn.peer, NODE_NONE});
+
+ err_wait = err_wait_begin;
}
}