Browse Source

respond to termination

pull/1786/head
orignal 2 years ago
parent
commit
f8a609f692
  1. 8
      libi2pd/SSU2.cpp
  2. 3
      libi2pd/SSU2Session.cpp

8
libi2pd/SSU2.cpp

@ -234,7 +234,8 @@ namespace transport @@ -234,7 +234,8 @@ namespace transport
{
ProcessNextPacket (packet->buf, packet->len, packet->from);
m_PacketsPool.ReleaseMt (packet);
if (m_LastSession) m_LastSession->FlushData ();
if (m_LastSession && m_LastSession->GetState () != eSSU2SessionStateTerminated)
m_LastSession->FlushData ();
}
}
@ -243,7 +244,8 @@ namespace transport @@ -243,7 +244,8 @@ namespace transport
for (auto& packet: packets)
ProcessNextPacket (packet->buf, packet->len, packet->from);
m_PacketsPool.ReleaseMt (packets);
if (m_LastSession) m_LastSession->FlushData ();
if (m_LastSession && m_LastSession->GetState () != eSSU2SessionStateTerminated)
m_LastSession->FlushData ();
}
void SSU2Server::AddSession (std::shared_ptr<SSU2Session> session)
@ -416,6 +418,8 @@ namespace transport @@ -416,6 +418,8 @@ namespace transport
m_LastSession->ProcessPeerTest (buf, len);
break;
case eSSU2SessionStateClosing:
m_LastSession->ProcessData (buf, len); // we might receive termintaion block
if (m_LastSession && m_LastSession->GetState () != eSSU2SessionStateTerminated)
m_LastSession->RequestTermination (eSSU2TerminationReasonIdleTimeout); // send termination again
break;
case eSSU2SessionStateTerminated:

3
libi2pd/SSU2Session.cpp

@ -1308,6 +1308,9 @@ namespace transport @@ -1308,6 +1308,9 @@ namespace transport
break;
case eSSU2BlkTermination:
LogPrint (eLogDebug, "SSU2: Termination reason=", (int)buf[11]);
if (IsEstablished () && buf[11] != eSSU2TerminationReasonTerminationReceived)
RequestTermination (eSSU2TerminationReasonTerminationReceived);
else
Terminate ();
break;
case eSSU2BlkRelayRequest:

Loading…
Cancel
Save