diff --git a/libi2pd/I2NPProtocol.cpp b/libi2pd/I2NPProtocol.cpp index f1827bf3..045fad8d 100644 --- a/libi2pd/I2NPProtocol.cpp +++ b/libi2pd/I2NPProtocol.cpp @@ -560,9 +560,15 @@ namespace i2p if (!m_LastTunnelBuildMessageTimestamp || ts > m_LastTunnelBuildMessageTimestamp + TUNNEL_BUILD_MESSAGES_MIN_INTERVAL) { m_LastTunnelBuildMessageTimestamp = ts; + if (m_NumDroppedTunnelBuildMessages > 0) + { + LogPrint (eLogWarning, "I2NP: ", m_NumDroppedTunnelBuildMessages, " tunnel build messages dropped"); + m_NumDroppedTunnelBuildMessages = 0; + } HandleI2NPMessage (msg); } - // else drop TBM + else // drop TBM + m_NumDroppedTunnelBuildMessages++; break; } default: diff --git a/libi2pd/I2NPProtocol.h b/libi2pd/I2NPProtocol.h index a3323019..bef65267 100644 --- a/libi2pd/I2NPProtocol.h +++ b/libi2pd/I2NPProtocol.h @@ -319,12 +319,12 @@ namespace tunnel size_t GetI2NPMessageLength (const uint8_t * msg, size_t len); void HandleI2NPMessage (std::shared_ptr msg); - const uint64_t TUNNEL_BUILD_MESSAGES_MIN_INTERVAL = 100; // in milliseconds + const uint64_t TUNNEL_BUILD_MESSAGES_MIN_INTERVAL = 200; // in milliseconds class I2NPMessagesHandler { public: - I2NPMessagesHandler (): m_LastTunnelBuildMessageTimestamp (0) {}; + I2NPMessagesHandler (): m_LastTunnelBuildMessageTimestamp (0), m_NumDroppedTunnelBuildMessages (0) {}; ~I2NPMessagesHandler (); void PutNextMessage (std::shared_ptr&& msg); void Flush (); @@ -333,6 +333,7 @@ namespace tunnel std::list > m_TunnelMsgs, m_TunnelGatewayMsgs; uint64_t m_LastTunnelBuildMessageTimestamp; // in milliseconds + int m_NumDroppedTunnelBuildMessages; }; }