use splice if queue is not semi-full

This commit is contained in:
orignal 2024-10-29 12:46:14 -04:00
parent 9bc595a9a2
commit 3f10f6651d

View File

@ -412,16 +412,24 @@ namespace transport
" is semi-full (size = ", m_SendQueue.size (), ", lag = ", queueLag / 1000, ", rtt = ", (int)m_RTT, ")");
}
}
for (auto it: msgs)
{
if (isSemiFull && it->onDrop)
it->Drop (); // drop earlier because we can handle it
else
if (isSemiFull)
{
for (auto it: msgs)
{
it->SetEnqueueTime (mts);
m_SendQueue.push_back (std::move (it));
if (it->onDrop)
it->Drop (); // drop earlier because we can handle it
else
{
it->SetEnqueueTime (mts);
m_SendQueue.push_back (std::move (it));
}
}
}
}
else
{
for (auto& it: msgs) it->SetEnqueueTime (mts);
m_SendQueue.splice (m_SendQueue.end (), msgs);
}
if (IsEstablished ())
{
SendQueue ();