From c664be52d79059425fb59314d691718ca704600f Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 12 Jul 2016 16:26:36 -0400 Subject: [PATCH] limit outgoing queue size --- NTCPSession.cpp | 12 ++++++++++-- NTCPSession.h | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/NTCPSession.cpp b/NTCPSession.cpp index 9a2b6687..d2c03857 100644 --- a/NTCPSession.cpp +++ b/NTCPSession.cpp @@ -713,8 +713,16 @@ namespace transport if (m_IsTerminated) return; if (m_IsSending) { - for (auto it: msgs) - m_SendQueue.push_back (it); + if (m_SendQueue.size () < NTCP_MAX_OUTGOING_QUEUE_SIZE) + { + for (auto it: msgs) + m_SendQueue.push_back (it); + } + else + { + LogPrint (eLogWarning, "NTCP: outgoing messages queue size exceeds ", NTCP_MAX_OUTGOING_QUEUE_SIZE); + Terminate (); + } } else Send (msgs); diff --git a/NTCPSession.h b/NTCPSession.h index 2a60f1dc..59b6bb58 100644 --- a/NTCPSession.h +++ b/NTCPSession.h @@ -40,6 +40,7 @@ namespace transport const size_t NTCP_DEFAULT_PHASE3_SIZE = 2/*size*/ + i2p::data::DEFAULT_IDENTITY_SIZE/*387*/ + 4/*ts*/ + 15/*padding*/ + 40/*signature*/; // 448 const int NTCP_BAN_EXPIRATION_TIMEOUT = 70; // in second const int NTCP_CLOCK_SKEW = 60; // in seconds + const int NTCP_MAX_OUTGOING_QUEUE_SIZE = 200; // how many messages we can queue up class NTCPServer; class NTCPSession: public TransportSession, public std::enable_shared_from_this