mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-23 09:14:13 +00:00
don't save received IV
This commit is contained in:
parent
f3c6dd4d3d
commit
6dbf8d1457
4
SSU.cpp
4
SSU.cpp
@ -87,10 +87,6 @@ namespace ssu
|
||||
{
|
||||
if (m_State == eSessionStateEstablished)
|
||||
ScheduleTermination ();
|
||||
/* // check for duplicate
|
||||
const uint8_t * iv = ((SSUHeader *)buf)->iv;
|
||||
if (m_ReceivedIVs.count (iv)) return; // duplicate detected
|
||||
m_ReceivedIVs.insert (iv);*/
|
||||
|
||||
if (m_IsSessionKey && Validate (buf, len, m_MacKey)) // try session key first
|
||||
DecryptSessionKey (buf, len);
|
||||
|
4
SSU.h
4
SSU.h
@ -115,8 +115,7 @@ namespace ssu
|
||||
void HandleTerminationTimer (const boost::system::error_code& ecode);
|
||||
|
||||
private:
|
||||
|
||||
typedef i2p::data::Tag<16> IV;
|
||||
|
||||
friend class SSUData; // TODO: change in later
|
||||
SSUServer& m_Server;
|
||||
boost::asio::ip::udp::endpoint m_RemoteEndpoint;
|
||||
@ -132,7 +131,6 @@ namespace ssu
|
||||
i2p::crypto::CBCDecryption m_SessionKeyDecryption;
|
||||
uint8_t m_SessionKey[32], m_MacKey[32];
|
||||
std::list<i2p::I2NPMessage *> m_DelayedMessages;
|
||||
std::set<IV> m_ReceivedIVs;
|
||||
SSUData m_Data;
|
||||
size_t m_NumSentBytes, m_NumReceivedBytes;
|
||||
};
|
||||
|
28
SSUData.cpp
28
SSUData.cpp
@ -354,32 +354,18 @@ namespace ssu
|
||||
if (ecode != boost::asio::error::operation_aborted)
|
||||
{
|
||||
uint32_t ts = i2p::util::GetSecondsSinceEpoch ();
|
||||
for (auto it = m_SentMessages.begin (); it != m_SentMessages.end ();)
|
||||
for (auto it : m_SentMessages)
|
||||
{
|
||||
if (ts >= it->second->nextResendTime)
|
||||
if (ts >= it.second->nextResendTime && it.second->numResends < MAX_NUM_RESENDS)
|
||||
{
|
||||
bool isEmpty = true;
|
||||
for (auto f: it->second->fragments)
|
||||
if (f)
|
||||
{
|
||||
isEmpty = false;
|
||||
m_Session.Send (f->buf, f->len); // resend
|
||||
}
|
||||
for (auto f: it.second->fragments)
|
||||
if (f) m_Session.Send (f->buf, f->len); // resend
|
||||
|
||||
it->second->numResends++;
|
||||
if (isEmpty || it->second->numResends >= MAX_NUM_RESENDS)
|
||||
{
|
||||
delete it->second;
|
||||
it = m_SentMessages.erase (it);
|
||||
}
|
||||
else
|
||||
it++;
|
||||
it.second->numResends++;
|
||||
it.second->nextResendTime += it.second->numResends*RESEND_INTERVAL;
|
||||
}
|
||||
else
|
||||
it++;
|
||||
}
|
||||
if (!m_SentMessages.empty ())
|
||||
ScheduleResend ();
|
||||
ScheduleResend ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user