send correct acnt if gaps

This commit is contained in:
orignal 2022-04-05 18:23:52 -04:00
parent 3052dbd1e8
commit 207b13dcab

View File

@ -992,7 +992,19 @@ namespace transport
htobe32buf (buf + 3, ackThrough); // Ack Through
uint8_t acnt = 0;
if (ackThrough)
acnt = std::min ((int)ackThrough, 255);
{
if (m_OutOfSequencePackets.empty ())
acnt = std::min ((int)ackThrough, 255); // no gaps
else
{
auto it = m_OutOfSequencePackets.rbegin (); it++; // prev packet num
while (it != m_OutOfSequencePackets.rend () && *it == ackThrough - acnt - 1)
{
acnt++;
it++;
}
}
}
buf[7] = acnt; // acnt
// TODO: ranges
return 8;
@ -1106,6 +1118,11 @@ namespace transport
else
++it;
}
if (m_OutOfSequencePackets.size () > 255)
{
m_ReceivePacketNum = *m_OutOfSequencePackets.rbegin ();
m_OutOfSequencePackets.clear ();
}
}
SSU2Server::SSU2Server ():