|
|
@ -351,8 +351,12 @@ namespace transport
|
|
|
|
void SSU2Session::PostI2NPMessages (std::vector<std::shared_ptr<I2NPMessage> > msgs)
|
|
|
|
void SSU2Session::PostI2NPMessages (std::vector<std::shared_ptr<I2NPMessage> > msgs)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (m_State == eSSU2SessionStateTerminated) return;
|
|
|
|
if (m_State == eSSU2SessionStateTerminated) return;
|
|
|
|
|
|
|
|
bool isSemiFull = m_SendQueue.size () > SSU2_MAX_OUTGOING_QUEUE_SIZE/2;
|
|
|
|
for (auto it: msgs)
|
|
|
|
for (auto it: msgs)
|
|
|
|
m_SendQueue.push_back (std::move (it));
|
|
|
|
if (isSemiFull && it->onDrop)
|
|
|
|
|
|
|
|
it->Drop (); // drop earlier because we can handle it
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
m_SendQueue.push_back (std::move (it));
|
|
|
|
SendQueue ();
|
|
|
|
SendQueue ();
|
|
|
|
|
|
|
|
|
|
|
|
if (m_SendQueue.size () > 0) // windows is full
|
|
|
|
if (m_SendQueue.size () > 0) // windows is full
|
|
|
|