mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-22 12:24:19 +00:00
respond to termination
This commit is contained in:
parent
987497bb10
commit
f8a609f692
@ -234,7 +234,8 @@ namespace transport
|
|||||||
{
|
{
|
||||||
ProcessNextPacket (packet->buf, packet->len, packet->from);
|
ProcessNextPacket (packet->buf, packet->len, packet->from);
|
||||||
m_PacketsPool.ReleaseMt (packet);
|
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
|
|||||||
for (auto& packet: packets)
|
for (auto& packet: packets)
|
||||||
ProcessNextPacket (packet->buf, packet->len, packet->from);
|
ProcessNextPacket (packet->buf, packet->len, packet->from);
|
||||||
m_PacketsPool.ReleaseMt (packets);
|
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)
|
void SSU2Server::AddSession (std::shared_ptr<SSU2Session> session)
|
||||||
@ -416,7 +418,9 @@ namespace transport
|
|||||||
m_LastSession->ProcessPeerTest (buf, len);
|
m_LastSession->ProcessPeerTest (buf, len);
|
||||||
break;
|
break;
|
||||||
case eSSU2SessionStateClosing:
|
case eSSU2SessionStateClosing:
|
||||||
m_LastSession->RequestTermination (eSSU2TerminationReasonIdleTimeout); // send termination again
|
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;
|
break;
|
||||||
case eSSU2SessionStateTerminated:
|
case eSSU2SessionStateTerminated:
|
||||||
m_LastSession = nullptr;
|
m_LastSession = nullptr;
|
||||||
|
@ -1308,7 +1308,10 @@ namespace transport
|
|||||||
break;
|
break;
|
||||||
case eSSU2BlkTermination:
|
case eSSU2BlkTermination:
|
||||||
LogPrint (eLogDebug, "SSU2: Termination reason=", (int)buf[11]);
|
LogPrint (eLogDebug, "SSU2: Termination reason=", (int)buf[11]);
|
||||||
Terminate ();
|
if (IsEstablished () && buf[11] != eSSU2TerminationReasonTerminationReceived)
|
||||||
|
RequestTermination (eSSU2TerminationReasonTerminationReceived);
|
||||||
|
else
|
||||||
|
Terminate ();
|
||||||
break;
|
break;
|
||||||
case eSSU2BlkRelayRequest:
|
case eSSU2BlkRelayRequest:
|
||||||
LogPrint (eLogDebug, "SSU2: RelayRequest");
|
LogPrint (eLogDebug, "SSU2: RelayRequest");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user