mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2026-10-15 22:01:09 +00:00
generate msgid from instead RAND_bytes
This commit is contained in:
@@ -474,7 +474,7 @@ namespace datagram
|
||||
htobe16buf (buf + 6, toPort); // destination port
|
||||
buf[9] = protocolType; // raw or datagram protocol
|
||||
msg->len += size + 4;
|
||||
msg->FillI2NPMessageHeader (eI2NPData, 0, checksum);
|
||||
msg->FillI2NPMessageHeader (eI2NPData, m_Owner->GetRng ()(), checksum);
|
||||
}
|
||||
else
|
||||
msg = nullptr;
|
||||
|
||||
@@ -1123,7 +1123,7 @@ namespace garlic
|
||||
|
||||
htobe32buf (m->GetPayload (), len);
|
||||
m->len += len + 4;
|
||||
m->FillI2NPMessageHeader (eI2NPGarlic);
|
||||
m->FillI2NPMessageHeader (eI2NPGarlic, GetOwner ()->GetRng ()());
|
||||
return m;
|
||||
}
|
||||
|
||||
|
||||
@@ -49,24 +49,16 @@ namespace i2p
|
||||
return NewI2NPMessage ();
|
||||
}
|
||||
|
||||
void I2NPMessage::FillI2NPMessageHeader (I2NPMessageType msgType, uint32_t replyMsgID, bool checksum)
|
||||
void I2NPMessage::FillI2NPMessageHeader (I2NPMessageType msgType, uint32_t msgID, bool checksum)
|
||||
{
|
||||
SetTypeID (msgType);
|
||||
if (!replyMsgID) RAND_bytes ((uint8_t *)&replyMsgID, 4);
|
||||
SetMsgID (replyMsgID);
|
||||
if (!msgID) RAND_bytes ((uint8_t *)&msgID, 4);
|
||||
SetMsgID (msgID);
|
||||
SetExpiration (i2p::util::GetMillisecondsSinceEpoch () + I2NP_MESSAGE_EXPIRATION_TIMEOUT);
|
||||
UpdateSize ();
|
||||
if (checksum) UpdateChks ();
|
||||
}
|
||||
|
||||
void I2NPMessage::RenewI2NPMessageHeader ()
|
||||
{
|
||||
uint32_t msgID;
|
||||
RAND_bytes ((uint8_t *)&msgID, 4);
|
||||
SetMsgID (msgID);
|
||||
SetExpiration (i2p::util::GetMillisecondsSinceEpoch () + I2NP_MESSAGE_EXPIRATION_TIMEOUT);
|
||||
}
|
||||
|
||||
bool I2NPMessage::IsExpired (uint64_t ts) const
|
||||
{
|
||||
auto exp = GetExpiration ();
|
||||
|
||||
@@ -246,8 +246,7 @@ namespace tunnel
|
||||
memcpy (ntcp2 + I2NP_HEADER_TYPEID_OFFSET, GetHeader () + I2NP_HEADER_TYPEID_OFFSET, 5); // typeid + msgid
|
||||
}
|
||||
|
||||
void FillI2NPMessageHeader (I2NPMessageType msgType, uint32_t replyMsgID = 0, bool checksum = true);
|
||||
void RenewI2NPMessageHeader ();
|
||||
void FillI2NPMessageHeader (I2NPMessageType msgType, uint32_t msgID = 0, bool checksum = true);
|
||||
bool IsExpired () const;
|
||||
bool IsExpired (uint64_t ts) const; // in milliseconds
|
||||
|
||||
|
||||
@@ -2513,7 +2513,7 @@ namespace stream
|
||||
htobe16buf (buf + 6, toPort); // destination port
|
||||
buf[9] = i2p::client::PROTOCOL_TYPE_STREAMING; // streaming protocol
|
||||
msg->len += size;
|
||||
msg->FillI2NPMessageHeader (eI2NPData, 0, checksum);
|
||||
msg->FillI2NPMessageHeader (eI2NPData, m_Owner->GetRng ()(), checksum);
|
||||
}
|
||||
else
|
||||
msg = nullptr;
|
||||
|
||||
@@ -252,7 +252,7 @@ namespace client
|
||||
htobe32buf (buf, len);
|
||||
memcpy (buf + 4, payload, len);
|
||||
msg->len += len + 4;
|
||||
msg->FillI2NPMessageHeader (eI2NPData);
|
||||
msg->FillI2NPMessageHeader (eI2NPData, GetRng ()());
|
||||
auto remote = FindLeaseSet (ident);
|
||||
if (remote)
|
||||
{
|
||||
@@ -393,7 +393,7 @@ namespace client
|
||||
htobe32buf (buf, len);
|
||||
memcpy (buf + 4, payload, len);
|
||||
msg->len += len + 4;
|
||||
msg->FillI2NPMessageHeader (eI2NPData);
|
||||
msg->FillI2NPMessageHeader (eI2NPData, GetRng ()());
|
||||
// wrap in gralic
|
||||
auto garlic = remoteSession->WrapSingleMessage (msg);
|
||||
// send
|
||||
|
||||
Reference in New Issue
Block a user