|
|
@ -15,9 +15,8 @@ namespace transport |
|
|
|
if (msg->len + fragmentSize > msg->maxLen) |
|
|
|
if (msg->len + fragmentSize > msg->maxLen) |
|
|
|
{ |
|
|
|
{ |
|
|
|
LogPrint (eLogInfo, "SSU I2NP message size ", msg->maxLen, " is not enough"); |
|
|
|
LogPrint (eLogInfo, "SSU I2NP message size ", msg->maxLen, " is not enough"); |
|
|
|
I2NPMessage * newMsg = NewI2NPMessage (); |
|
|
|
auto newMsg = ToSharedI2NPMessage(NewI2NPMessage ()); |
|
|
|
*newMsg = *msg; |
|
|
|
*newMsg = *msg; |
|
|
|
DeleteI2NPMessage (msg); |
|
|
|
|
|
|
|
msg = newMsg; |
|
|
|
msg = newMsg; |
|
|
|
} |
|
|
|
} |
|
|
|
memcpy (msg->buf + msg->len, fragment, fragmentSize); |
|
|
|
memcpy (msg->buf + msg->len, fragment, fragmentSize); |
|
|
@ -174,7 +173,7 @@ namespace transport |
|
|
|
if (it == m_IncompleteMessages.end ()) |
|
|
|
if (it == m_IncompleteMessages.end ()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// create new message
|
|
|
|
// create new message
|
|
|
|
auto msg = NewI2NPShortMessage (); |
|
|
|
auto msg = ToSharedI2NPMessage (NewI2NPShortMessage ()); |
|
|
|
msg->len -= I2NP_SHORT_HEADER_SIZE; |
|
|
|
msg->len -= I2NP_SHORT_HEADER_SIZE; |
|
|
|
it = m_IncompleteMessages.insert (std::make_pair (msgID, |
|
|
|
it = m_IncompleteMessages.insert (std::make_pair (msgID, |
|
|
|
std::unique_ptr<IncompleteMessage>(new IncompleteMessage (msg)))).first; |
|
|
|
std::unique_ptr<IncompleteMessage>(new IncompleteMessage (msg)))).first; |
|
|
@ -244,10 +243,7 @@ namespace transport |
|
|
|
m_Handler.PutNextMessage (msg); |
|
|
|
m_Handler.PutNextMessage (msg); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
|
|
|
|
LogPrint (eLogWarning, "SSU message ", msgID, " already received"); |
|
|
|
LogPrint (eLogWarning, "SSU message ", msgID, " already received"); |
|
|
|
i2p::DeleteI2NPMessage (msg); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
@ -259,7 +255,6 @@ namespace transport |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
LogPrint (eLogError, "SSU unexpected message ", (int)msg->GetTypeID ()); |
|
|
|
LogPrint (eLogError, "SSU unexpected message ", (int)msg->GetTypeID ()); |
|
|
|
DeleteI2NPMessage (msg); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|