mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-24 14:24:14 +00:00
limit received SSU2 packets queue
This commit is contained in:
parent
0a08383471
commit
e574354896
@ -457,13 +457,20 @@ namespace transport
|
||||
void SSU2Server::InsertToReceivedPacketsQueue (std::list<Packet *>& packets)
|
||||
{
|
||||
if (packets.empty ()) return;
|
||||
bool empty = false;
|
||||
size_t queueSize = 0;
|
||||
{
|
||||
std::lock_guard<std::mutex> l(m_ReceivedPacketsQueueMutex);
|
||||
empty = m_ReceivedPacketsQueue.empty ();
|
||||
m_ReceivedPacketsQueue.splice (m_ReceivedPacketsQueue.end (), packets);
|
||||
queueSize = m_ReceivedPacketsQueue.size ();
|
||||
if (queueSize < SSU2_MAX_RECEIVED_QUEUE_SIZE)
|
||||
m_ReceivedPacketsQueue.splice (m_ReceivedPacketsQueue.end (), packets);
|
||||
else
|
||||
{
|
||||
LogPrint (eLogError, "SSU2: Received queue size ", queueSize, " exceeds max size", SSU2_MAX_RECEIVED_QUEUE_SIZE);
|
||||
m_PacketsPool.ReleaseMt (packets);
|
||||
queueSize = 0; // invoke processing just in case
|
||||
}
|
||||
}
|
||||
if (empty)
|
||||
if (!queueSize)
|
||||
GetService ().post([this]() { HandleReceivedPacketsQueue (); });
|
||||
}
|
||||
|
||||
|
@ -37,6 +37,7 @@ namespace transport
|
||||
const uint64_t SSU2_SOCKET_MAX_BUFFER_SIZE = 4 * 1024 * 1024;
|
||||
const size_t SSU2_MAX_NUM_INTRODUCERS = 3;
|
||||
const size_t SSU2_MIN_RECEIVED_PACKET_SIZE = 40; // 16 byte short header + 8 byte minimum payload + 16 byte MAC
|
||||
const size_t SSU2_MAX_RECEIVED_QUEUE_SIZE = 2500; // in packets
|
||||
const int SSU2_TO_INTRODUCER_SESSION_DURATION = 3600; // 1 hour
|
||||
const int SSU2_TO_INTRODUCER_SESSION_EXPIRATION = 4800; // 80 minutes
|
||||
const int SSU2_KEEP_ALIVE_INTERVAL = 15; // in seconds
|
||||
|
Loading…
x
Reference in New Issue
Block a user