From 4960587f466d54e378f00fa2bb899adbc5d1f3c5 Mon Sep 17 00:00:00 2001 From: orignal Date: Wed, 1 Feb 2023 18:37:31 -0500 Subject: [PATCH] cleanup out-of-sequnce list more aggressivly --- libi2pd/SSU2Session.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libi2pd/SSU2Session.cpp b/libi2pd/SSU2Session.cpp index 5e97b461..4a934ab2 100644 --- a/libi2pd/SSU2Session.cpp +++ b/libi2pd/SSU2Session.cpp @@ -2851,7 +2851,8 @@ namespace transport } if (!m_OutOfSequencePackets.empty ()) { - if (m_OutOfSequencePackets.size () > 2*SSU2_MAX_NUM_ACK_RANGES || + int ranges = 0; + while (m_OutOfSequencePackets.size () > 2*SSU2_MAX_NUM_ACK_RANGES || *m_OutOfSequencePackets.rbegin () > m_ReceivePacketNum + 255*8) { uint32_t packet = *m_OutOfSequencePackets.begin (); @@ -2861,9 +2862,14 @@ namespace transport packet--; m_ReceivePacketNum = packet - 1; UpdateReceivePacketNum (packet); + ranges++; + if (ranges > SSU2_MAX_NUM_ACK_RANGES) break; } else + { LogPrint (eLogError, "SSU2: Out of sequence packet ", packet, " is less than last received ", m_ReceivePacketNum); + break; + } } if (m_OutOfSequencePackets.size () > 255*4) {