From 1a307f309314dcef4daa02858e26b498eeb9e00b Mon Sep 17 00:00:00 2001 From: orignal Date: Mon, 23 Feb 2015 15:06:14 -0500 Subject: [PATCH] limit number of transit tunnels --- I2NPProtocol.cpp | 3 ++- I2NPProtocol.h | 2 ++ I2PControl.cpp | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/I2NPProtocol.cpp b/I2NPProtocol.cpp index 8326dc55..f2ef9ec1 100644 --- a/I2NPProtocol.cpp +++ b/I2NPProtocol.cpp @@ -280,7 +280,8 @@ namespace i2p i2p::crypto::ElGamalDecrypt (i2p::context.GetEncryptionPrivateKey (), record + BUILD_REQUEST_RECORD_ENCRYPTED_OFFSET, clearText); // replace record to reply - if (i2p::context.AcceptsTunnels ()) + if (i2p::context.AcceptsTunnels () && + i2p::tunnel::tunnels.GetTransitTunnels ().size () <= MAX_NUM_TRANSIT_TUNNELS) { i2p::tunnel::TransitTunnel * transitTunnel = i2p::tunnel::CreateTransitTunnel ( diff --git a/I2NPProtocol.h b/I2NPProtocol.h index de91df73..5bb94062 100644 --- a/I2NPProtocol.h +++ b/I2NPProtocol.h @@ -97,6 +97,8 @@ namespace i2p const uint8_t DATABASE_LOOKUP_TYPE_ROUTERINFO_LOOKUP = 0x08; // 1000 const uint8_t DATABASE_LOOKUP_TYPE_EXPLORATORY_LOOKUP = 0x0C; // 1100 + const int MAX_NUM_TRANSIT_TUNNELS = 1500; + namespace tunnel { class InboundTunnel; diff --git a/I2PControl.cpp b/I2PControl.cpp index 0432ea34..4183476d 100644 --- a/I2PControl.cpp +++ b/I2PControl.cpp @@ -309,7 +309,7 @@ namespace client void I2PControlService::TunnelsParticipatingHandler (std::map& results) { - results[I2P_CONTROL_ROUTER_INFO_TUNNELS_PARTICIPATING] = boost::lexical_cast(i2p::tunnel::tunnels.GetTransitTunnels ().size ());; + results[I2P_CONTROL_ROUTER_INFO_TUNNELS_PARTICIPATING] = boost::lexical_cast(i2p::tunnel::tunnels.GetTransitTunnels ().size ()); } // RouterManager