don't send termination again if termination received block received

This commit is contained in:
orignal 2022-12-06 21:40:33 -05:00
parent ef9d27e424
commit 8ad5696e50
3 changed files with 14 additions and 5 deletions

View file

@ -1462,12 +1462,19 @@ namespace transport
m_IsDataReceived = true;
break;
case eSSU2BlkTermination:
LogPrint (eLogDebug, "SSU2: Termination reason=", (int)buf[11]);
if (IsEstablished () && buf[11] != eSSU2TerminationReasonTerminationReceived)
{
uint8_t rsn = buf[11]; // reason
LogPrint (eLogDebug, "SSU2: Termination reason=", (int)rsn);
if (IsEstablished () && rsn != eSSU2TerminationReasonTerminationReceived)
RequestTermination (eSSU2TerminationReasonTerminationReceived);
else
else if (m_State != eSSU2SessionStateTerminated)
{
if (m_State == eSSU2SessionStateClosing && rsn == eSSU2TerminationReasonTerminationReceived)
m_State = eSSU2SessionStateClosingConfirmed;
Done ();
break;
}
break;
}
case eSSU2BlkRelayRequest:
LogPrint (eLogDebug, "SSU2: RelayRequest");
HandleRelayRequest (buf + offset, size);