mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-22 04:04:16 +00:00
wait for DeliveryStatus message
This commit is contained in:
parent
735f6bd72a
commit
c5f70d4559
26
SSU.cpp
26
SSU.cpp
@ -47,6 +47,7 @@ namespace ssu
|
||||
{
|
||||
switch (m_State)
|
||||
{
|
||||
case eSessionStateConfirmedSent:
|
||||
case eSessionStateEstablished:
|
||||
// most common case
|
||||
ProcessMessage (buf, len);
|
||||
@ -132,8 +133,6 @@ namespace ssu
|
||||
i2p::context.UpdateAddress (ourIP.to_string ().c_str ());
|
||||
uint32_t relayTag = be32toh (*(uint32_t *)(buf + sizeof (SSUHeader) + 263));
|
||||
SendSessionConfirmed (buf + sizeof (SSUHeader), ourAddress, relayTag);
|
||||
m_State = eSessionStateEstablished;
|
||||
Established ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,9 +146,9 @@ namespace ssu
|
||||
if ((header->flag >> 4) == PAYLOAD_TYPE_SESSION_CONFIRMED)
|
||||
{
|
||||
m_State = eSessionStateConfirmedReceived;
|
||||
LogPrint ("Session confirmed received");
|
||||
// TODO:
|
||||
LogPrint ("Session confirmed received");
|
||||
m_State = eSessionStateEstablished;
|
||||
// TODO: send DeliverStatus
|
||||
Established ();
|
||||
}
|
||||
else
|
||||
@ -374,6 +373,7 @@ namespace ssu
|
||||
|
||||
void SSUSession::Established ()
|
||||
{
|
||||
SendI2NPMessage (CreateDatabaseStoreMsg ());
|
||||
if (!m_DelayedMessages.empty ())
|
||||
{
|
||||
for (auto it :m_DelayedMessages)
|
||||
@ -463,11 +463,25 @@ namespace ssu
|
||||
m_IncomleteMessages[msgID] = msg;
|
||||
if (isLast)
|
||||
{
|
||||
SendMsgAck (msgID);
|
||||
if (fragmentNum > 0)
|
||||
m_IncomleteMessages.erase (msgID);
|
||||
msg->FromSSU (msgID);
|
||||
i2p::HandleI2NPMessage (msg, false);
|
||||
SendMsgAck (msgID);
|
||||
if (m_State == eSessionStateEstablished)
|
||||
i2p::HandleI2NPMessage (msg, false);
|
||||
else
|
||||
{
|
||||
// we expect DeliveryStatus
|
||||
if (msg->GetHeader ()->typeID == eI2NPDeliveryStatus)
|
||||
{
|
||||
LogPrint ("SSU session established");
|
||||
m_State = eSessionStateEstablished;
|
||||
Established ();
|
||||
}
|
||||
else
|
||||
LogPrint ("SSU unexpected message ", (int)msg->GetHeader ()->typeID);
|
||||
DeleteI2NPMessage (msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
buf += fragmentSize;
|
||||
|
Loading…
x
Reference in New Issue
Block a user