mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-03-21 16:49:10 +01:00
pass incomplete I2NP message by move
This commit is contained in:
parent
31242401e5
commit
95e994e171
2 changed files with 5 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2021, The PurpleI2P Project
|
* Copyright (c) 2013-2022, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -176,11 +176,10 @@ namespace transport
|
||||||
if (it == m_IncompleteMessages.end ())
|
if (it == m_IncompleteMessages.end ())
|
||||||
{
|
{
|
||||||
// create new message
|
// create new message
|
||||||
auto msg = (!fragmentNum && fragmentSize > 0 && buf[I2NP_SHORT_HEADER_TYPEID_OFFSET] == eI2NPTunnelData) ?
|
auto msg = NewI2NPShortMessage ();
|
||||||
NewI2NPTunnelMessage (true) : 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,
|
||||||
m_Session.GetServer ().GetIncompleteMessagesPool ().AcquireShared (msg))).first;
|
m_Session.GetServer ().GetIncompleteMessagesPool ().AcquireShared (std::move (msg)))).first;
|
||||||
}
|
}
|
||||||
auto& incompleteMessage = it->second;
|
auto& incompleteMessage = it->second;
|
||||||
// mark fragment as received
|
// mark fragment as received
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2021, The PurpleI2P Project
|
* Copyright (c) 2013-2022, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -79,7 +79,7 @@ namespace transport
|
||||||
uint64_t receivedFragmentsBits;
|
uint64_t receivedFragmentsBits;
|
||||||
std::set<std::shared_ptr<Fragment>, FragmentCmp> savedFragments;
|
std::set<std::shared_ptr<Fragment>, FragmentCmp> savedFragments;
|
||||||
|
|
||||||
IncompleteMessage (std::shared_ptr<I2NPMessage> m): msg (m), nextFragmentNum (0),
|
IncompleteMessage (std::shared_ptr<I2NPMessage>&& m): msg (m), nextFragmentNum (0),
|
||||||
lastFragmentInsertTime (0), receivedFragmentsBits (0) {};
|
lastFragmentInsertTime (0), receivedFragmentsBits (0) {};
|
||||||
void AttachNextFragment (const uint8_t * fragment, size_t fragmentSize);
|
void AttachNextFragment (const uint8_t * fragment, size_t fragmentSize);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue