From 08f5af68f0a57514ffa00b5bde5f9f45adc5210f Mon Sep 17 00:00:00 2001 From: orignal Date: Wed, 11 Mar 2015 11:28:51 -0400 Subject: [PATCH] reduce memory usage --- SSUData.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/SSUData.cpp b/SSUData.cpp index c34fb690..d8f5ff17 100644 --- a/SSUData.cpp +++ b/SSUData.cpp @@ -163,7 +163,7 @@ namespace transport else { // create new message - msg = NewI2NPMessage (); + msg = NewI2NPShortMessage (); msg->len -= I2NP_SHORT_HEADER_SIZE; it = m_IncompleteMessages.insert (std::make_pair (msgID, std::unique_ptr(new IncompleteMessage (msg)))).first; @@ -174,6 +174,15 @@ namespace transport if (fragmentNum == incompleteMessage->nextFragmentNum) { // expected fragment + if (msg->len + fragmentSize > msg->maxLen) + { + LogPrint (eLogInfo, "Short I2NP message of size ", msg->maxLen, " is not enough"); + I2NPMessage * newMsg = NewI2NPMessage (); + *newMsg = *msg; + DeleteI2NPMessage (msg); + msg = newMsg; + it->second->msg = msg; + } memcpy (msg->buf + msg->len, buf, fragmentSize); msg->len += fragmentSize; incompleteMessage->nextFragmentNum++;