Browse Source

token received session state

pull/1769/head
orignal 3 years ago
parent
commit
6b3d7372ae
  1. 5
      libi2pd/SSU2Session.cpp
  2. 1
      libi2pd/SSU2Session.h

5
libi2pd/SSU2Session.cpp

@ -403,7 +403,7 @@ namespace transport @@ -403,7 +403,7 @@ namespace transport
i2p::crypto::ChaCha20 (headerX, 48, m_Address->i, nonce, headerX);
m_NoiseState->MixHash (payload, payloadSize); // h = SHA256(h || encrypted payload from Session Request) for SessionCreated
// send
if (m_Server.AddPendingOutgoingSession (shared_from_this ()))
if (m_State == eSSU2SessionStateTokenReceived || m_Server.AddPendingOutgoingSession (shared_from_this ()))
m_Server.Send (header.buf, 16, headerX, 48, payload, payloadSize, m_RemoteEndpoint);
else
{
@ -545,7 +545,6 @@ namespace transport @@ -545,7 +545,6 @@ namespace transport
HandlePayload (decryptedPayload.data (), decryptedPayload.size ());
m_Server.AddSession (shared_from_this ());
m_Server.RemovePendingOutgoingSession (m_RemoteEndpoint);
SendSessionConfirmed (headerX + 16);
KDFDataPhase (m_KeyDataSend, m_KeyDataReceive);
Established ();
@ -842,8 +841,8 @@ namespace transport @@ -842,8 +841,8 @@ namespace transport
}
HandlePayload (payload, len - 48);
m_State = eSSU2SessionStateTokenReceived;
InitNoiseXKState1 (*m_NoiseState, m_Address->s); // reset Noise TODO: check state
m_Server.RemovePendingOutgoingSession (m_RemoteEndpoint);
SendSessionRequest (headerX[1]);
return true;
}

1
libi2pd/SSU2Session.h

@ -79,6 +79,7 @@ namespace transport @@ -79,6 +79,7 @@ namespace transport
enum SSU2SessionState
{
eSSU2SessionStateUnknown,
eSSU2SessionStateTokenReceived,
eSSU2SessionStateEstablished,
eSSU2SessionStateTerminated,
eSSU2SessionStateFailed,

Loading…
Cancel
Save