mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2024-11-16 00:12:43 +00:00
renew LeaseSet's I2NP message ID and timestamp before sending
This commit is contained in:
parent
eeacc3e0f3
commit
ac48e3b355
@ -31,17 +31,17 @@ namespace i2p
|
|||||||
delete msg;
|
delete msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint32_t I2NPmsgID = 0; // TODO: create class
|
||||||
void FillI2NPMessageHeader (I2NPMessage * msg, I2NPMessageType msgType, uint32_t replyMsgID)
|
void FillI2NPMessageHeader (I2NPMessage * msg, I2NPMessageType msgType, uint32_t replyMsgID)
|
||||||
{
|
{
|
||||||
static uint32_t msgID = 0;
|
|
||||||
I2NPHeader * header = msg->GetHeader ();
|
I2NPHeader * header = msg->GetHeader ();
|
||||||
header->typeID = msgType;
|
header->typeID = msgType;
|
||||||
if (replyMsgID) // for tunnel creation
|
if (replyMsgID) // for tunnel creation
|
||||||
header->msgID = htobe32 (replyMsgID);
|
header->msgID = htobe32 (replyMsgID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
header->msgID = htobe32 (msgID);
|
header->msgID = htobe32 (I2NPmsgID);
|
||||||
msgID++;
|
I2NPmsgID++;
|
||||||
}
|
}
|
||||||
header->expiration = htobe64 (i2p::util::GetMillisecondsSinceEpoch () + 5000); // TODO: 5 secs is a magic number
|
header->expiration = htobe64 (i2p::util::GetMillisecondsSinceEpoch () + 5000); // TODO: 5 secs is a magic number
|
||||||
int len = msg->GetLength () - sizeof (I2NPHeader);
|
int len = msg->GetLength () - sizeof (I2NPHeader);
|
||||||
@ -51,6 +51,17 @@ namespace i2p
|
|||||||
header->chks = hash[0];
|
header->chks = hash[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RenewI2NPMessageHeader (I2NPMessage * msg)
|
||||||
|
{
|
||||||
|
if (msg)
|
||||||
|
{
|
||||||
|
I2NPHeader * header = msg->GetHeader ();
|
||||||
|
header->msgID = htobe32 (I2NPmsgID);
|
||||||
|
I2NPmsgID++;
|
||||||
|
header->expiration = htobe64 (i2p::util::GetMillisecondsSinceEpoch () + 5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
I2NPMessage * CreateI2NPMessage (I2NPMessageType msgType, const uint8_t * buf, int len, uint32_t replyMsgID)
|
I2NPMessage * CreateI2NPMessage (I2NPMessageType msgType, const uint8_t * buf, int len, uint32_t replyMsgID)
|
||||||
{
|
{
|
||||||
I2NPMessage * msg = NewI2NPMessage ();
|
I2NPMessage * msg = NewI2NPMessage ();
|
||||||
|
@ -142,6 +142,7 @@ namespace tunnel
|
|||||||
I2NPMessage * NewI2NPMessage ();
|
I2NPMessage * NewI2NPMessage ();
|
||||||
void DeleteI2NPMessage (I2NPMessage * msg);
|
void DeleteI2NPMessage (I2NPMessage * msg);
|
||||||
void FillI2NPMessageHeader (I2NPMessage * msg, I2NPMessageType msgType, uint32_t replyMsgID = 0);
|
void FillI2NPMessageHeader (I2NPMessage * msg, I2NPMessageType msgType, uint32_t replyMsgID = 0);
|
||||||
|
void RenewI2NPMessageHeader (I2NPMessage * msg);
|
||||||
I2NPMessage * CreateI2NPMessage (I2NPMessageType msgType, const uint8_t * buf, int len, uint32_t replyMsgID = 0);
|
I2NPMessage * CreateI2NPMessage (I2NPMessageType msgType, const uint8_t * buf, int len, uint32_t replyMsgID = 0);
|
||||||
I2NPMessage * CreateI2NPMessage (const uint8_t * buf, int len);
|
I2NPMessage * CreateI2NPMessage (const uint8_t * buf, int len);
|
||||||
|
|
||||||
|
@ -369,10 +369,10 @@ namespace stream
|
|||||||
|
|
||||||
const I2NPMessage * StreamingDestination::GetLeaseSet ()
|
const I2NPMessage * StreamingDestination::GetLeaseSet ()
|
||||||
{
|
{
|
||||||
// TODO: LeaseSet is always re-created. ivestigate
|
if (!m_LeaseSet)
|
||||||
if (m_LeaseSet)
|
|
||||||
DeleteI2NPMessage (m_LeaseSet);
|
|
||||||
m_LeaseSet = CreateLeaseSet ();
|
m_LeaseSet = CreateLeaseSet ();
|
||||||
|
else
|
||||||
|
RenewI2NPMessageHeader (m_LeaseSet);
|
||||||
return m_LeaseSet;
|
return m_LeaseSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user