From dd9c176dccaeacb75b7a23c1b11f0291023dcc14 Mon Sep 17 00:00:00 2001 From: Anon2026 Date: Sat, 17 Jan 2026 17:55:43 +0300 Subject: [PATCH 1/2] Fix transit tunnels limit setting --- daemon/HTTPServer.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/daemon/HTTPServer.cpp b/daemon/HTTPServer.cpp index 03efced8..445f1c8e 100644 --- a/daemon/HTTPServer.cpp +++ b/daemon/HTTPServer.cpp @@ -849,7 +849,7 @@ namespace http { s << "
\r\n"; s << " \r\n"; s << " \r\n"; - s << " \r\n"; + s << " \r\n"; s << " \r\n"; s << "
\r\n
\r\n"; @@ -1475,10 +1475,11 @@ namespace http { else if (cmd == HTTP_COMMAND_LIMITTRANSIT) { uint32_t limit = std::stoul(params["limit"], nullptr); - if (limit > 0 && limit <= TRANSIT_TUNNELS_LIMIT) + if (limit >= 2 && limit <= TRANSIT_TUNNELS_LIMIT) i2p::tunnel::tunnels.SetMaxNumTransitTunnels (limit); else { - s << "" << tr("ERROR") << ": " << tr("Transit tunnels count must not exceed %d", TRANSIT_TUNNELS_LIMIT) << "\r\n
\r\n
\r\n"; + s << "" << tr("ERROR") << ": "; + s << tr("Transit tunnels count must be at least 2 and not exceed %d", TRANSIT_TUNNELS_LIMIT) << "\r\n

\r\n"; s << "" << tr("Back to commands list") << "\r\n
\r\n"; s << "

" << tr("You will be redirected in %d seconds", COMMAND_REDIRECT_TIMEOUT) << ""; res.add_header("Refresh", redirect.c_str()); From 60cb119bb2ad87a63f62303a706738bccf0dbe5d Mon Sep 17 00:00:00 2001 From: Anon2026 Date: Sat, 17 Jan 2026 22:50:12 +0300 Subject: [PATCH 2/2] Fix transit tunnels limit setting (config) --- daemon/Daemon.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/daemon/Daemon.cpp b/daemon/Daemon.cpp index 700dd776..fef05cbf 100644 --- a/daemon/Daemon.cpp +++ b/daemon/Daemon.cpp @@ -179,6 +179,8 @@ namespace util bool transit; i2p::config::GetOption("notransit", transit); i2p::context.SetAcceptsTunnels (!transit); uint32_t transitTunnels; i2p::config::GetOption("limits.transittunnels", transitTunnels); + if (transitTunnels < 2) + transitTunnels = 2; if (isFloodfill && i2p::config::IsDefault ("limits.transittunnels")) transitTunnels *= 2; // double default number of transit tunnels for floodfill i2p::tunnel::tunnels.SetMaxNumTransitTunnels (transitTunnels);