mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-28 11:47:48 +02:00
handle SSU I2NP header
This commit is contained in:
parent
d04f9e723c
commit
656392fe1e
2 changed files with 32 additions and 4 deletions
16
SSU.cpp
16
SSU.cpp
|
@ -388,23 +388,31 @@ namespace ssu
|
|||
{
|
||||
auto it = m_IncomleteMessages.find (msgID);
|
||||
if (it != m_IncomleteMessages.end ())
|
||||
{
|
||||
msg = it->second;
|
||||
memcpy (msg->buf + msg->len, buf, fragmentSize);
|
||||
msg->len += fragmentSize;
|
||||
}
|
||||
else
|
||||
// TODO:
|
||||
LogPrint ("Unexpected follow-on fragment ", fragmentNum, " of message ", msgID);
|
||||
}
|
||||
else // first fragment
|
||||
msg = NewI2NPMessage ();
|
||||
if (msg)
|
||||
{
|
||||
memcpy (msg->buf + msg->len, buf, fragmentSize);
|
||||
msg->len += fragmentSize;
|
||||
msg = NewI2NPMessage ();
|
||||
memcpy (msg->GetSSUHeader (), buf, fragmentSize);
|
||||
msg->len += fragmentSize - sizeof (I2NPHeaderShort);
|
||||
}
|
||||
|
||||
if (msg)
|
||||
{
|
||||
if (!fragmentNum && !isLast)
|
||||
m_IncomleteMessages[msgID] = msg;
|
||||
if (isLast)
|
||||
{
|
||||
if (fragmentNum > 0)
|
||||
m_IncomleteMessages.erase (msgID);
|
||||
msg->FromSSU (msgID);
|
||||
i2p::HandleI2NPMessage (msg, false);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue