mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-23 13:24:20 +00:00
use msgID from ECIESx25519 block
This commit is contained in:
parent
0b14c810fb
commit
5cb1f5986d
@ -345,10 +345,11 @@ namespace client
|
|||||||
void LeaseSetDestination::HandleI2NPMessage (const uint8_t * buf, size_t len)
|
void LeaseSetDestination::HandleI2NPMessage (const uint8_t * buf, size_t len)
|
||||||
{
|
{
|
||||||
I2NPMessageType typeID = (I2NPMessageType)(buf[I2NP_HEADER_TYPEID_OFFSET]);
|
I2NPMessageType typeID = (I2NPMessageType)(buf[I2NP_HEADER_TYPEID_OFFSET]);
|
||||||
LeaseSetDestination::HandleCloveI2NPMessage (typeID, buf + I2NP_HEADER_SIZE, GetI2NPMessageLength(buf, len) - I2NP_HEADER_SIZE);
|
uint32_t msgID = bufbe32toh (buf + I2NP_HEADER_MSGID_OFFSET);
|
||||||
|
LeaseSetDestination::HandleCloveI2NPMessage (typeID, buf + I2NP_HEADER_SIZE, GetI2NPMessageLength(buf, len) - I2NP_HEADER_SIZE, msgID);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LeaseSetDestination::HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len)
|
bool LeaseSetDestination::HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len, uint32_t msgID)
|
||||||
{
|
{
|
||||||
switch (typeID)
|
switch (typeID)
|
||||||
{
|
{
|
||||||
|
@ -144,7 +144,7 @@ namespace client
|
|||||||
|
|
||||||
// implements GarlicDestination
|
// implements GarlicDestination
|
||||||
void HandleI2NPMessage (const uint8_t * buf, size_t len);
|
void HandleI2NPMessage (const uint8_t * buf, size_t len);
|
||||||
bool HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len);
|
bool HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len, uint32_t msgID);
|
||||||
|
|
||||||
void SetLeaseSet (std::shared_ptr<const i2p::data::LocalLeaseSet> newLeaseSet);
|
void SetLeaseSet (std::shared_ptr<const i2p::data::LocalLeaseSet> newLeaseSet);
|
||||||
int GetLeaseSetType () const { return m_LeaseSetType; };
|
int GetLeaseSetType () const { return m_LeaseSetType; };
|
||||||
|
@ -1044,10 +1044,11 @@ namespace garlic
|
|||||||
{
|
{
|
||||||
LogPrint (eLogDebug, "Garlic: type local");
|
LogPrint (eLogDebug, "Garlic: type local");
|
||||||
I2NPMessageType typeID = (I2NPMessageType)(buf[0]); buf++; // typeid
|
I2NPMessageType typeID = (I2NPMessageType)(buf[0]); buf++; // typeid
|
||||||
buf += (4 + 4); // msgID + expiration
|
int32_t msgID = bufbe32toh (buf); buf += 4; // msgID
|
||||||
|
buf += 4; // expiration
|
||||||
ptrdiff_t offset = buf - buf1;
|
ptrdiff_t offset = buf - buf1;
|
||||||
if (offset <= (int)len)
|
if (offset <= (int)len)
|
||||||
HandleCloveI2NPMessage (typeID, buf, len - offset);
|
HandleCloveI2NPMessage (typeID, buf, len - offset, msgID);
|
||||||
else
|
else
|
||||||
LogPrint (eLogError, "Garlic: clove is too long");
|
LogPrint (eLogError, "Garlic: clove is too long");
|
||||||
break;
|
break;
|
||||||
@ -1066,13 +1067,14 @@ namespace garlic
|
|||||||
}
|
}
|
||||||
uint32_t gwTunnel = bufbe32toh (buf); buf += 4;
|
uint32_t gwTunnel = bufbe32toh (buf); buf += 4;
|
||||||
I2NPMessageType typeID = (I2NPMessageType)(buf[0]); buf++; // typeid
|
I2NPMessageType typeID = (I2NPMessageType)(buf[0]); buf++; // typeid
|
||||||
buf += (4 + 4); // msgID + expiration
|
uint32_t msgID = bufbe32toh (buf); buf += 4; // msgID
|
||||||
|
buf += 4; // expiration
|
||||||
offset += 13;
|
offset += 13;
|
||||||
if (GetTunnelPool ())
|
if (GetTunnelPool ())
|
||||||
{
|
{
|
||||||
auto tunnel = GetTunnelPool ()->GetNextOutboundTunnel ();
|
auto tunnel = GetTunnelPool ()->GetNextOutboundTunnel ();
|
||||||
if (tunnel)
|
if (tunnel)
|
||||||
tunnel->SendTunnelDataMsg (gwHash, gwTunnel, CreateI2NPMessage (typeID, buf, len - offset));
|
tunnel->SendTunnelDataMsg (gwHash, gwTunnel, CreateI2NPMessage (typeID, buf, len - offset, msgID));
|
||||||
else
|
else
|
||||||
LogPrint (eLogWarning, "Garlic: No outbound tunnels available for garlic clove");
|
LogPrint (eLogWarning, "Garlic: No outbound tunnels available for garlic clove");
|
||||||
}
|
}
|
||||||
|
@ -264,7 +264,7 @@ namespace garlic
|
|||||||
void AddECIESx25519Key (const uint8_t * key, const uint8_t * tag); // one tag
|
void AddECIESx25519Key (const uint8_t * key, const uint8_t * tag); // one tag
|
||||||
bool HandleECIESx25519TagMessage (uint8_t * buf, size_t len); // return true if found
|
bool HandleECIESx25519TagMessage (uint8_t * buf, size_t len); // return true if found
|
||||||
virtual void HandleI2NPMessage (const uint8_t * buf, size_t len) = 0; // called from clove only
|
virtual void HandleI2NPMessage (const uint8_t * buf, size_t len) = 0; // called from clove only
|
||||||
virtual bool HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len) = 0;
|
virtual bool HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len, uint32_t msgID) = 0;
|
||||||
void HandleGarlicMessage (std::shared_ptr<I2NPMessage> msg);
|
void HandleGarlicMessage (std::shared_ptr<I2NPMessage> msg);
|
||||||
void HandleDeliveryStatusMessage (uint32_t msgID);
|
void HandleDeliveryStatusMessage (uint32_t msgID);
|
||||||
|
|
||||||
|
@ -821,9 +821,9 @@ namespace i2p
|
|||||||
i2p::HandleI2NPMessage (CreateI2NPMessage (buf, GetI2NPMessageLength (buf, len)));
|
i2p::HandleI2NPMessage (CreateI2NPMessage (buf, GetI2NPMessageLength (buf, len)));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouterContext::HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len)
|
bool RouterContext::HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len, uint32_t msgID)
|
||||||
{
|
{
|
||||||
auto msg = CreateI2NPMessage (typeID, payload, len);
|
auto msg = CreateI2NPMessage (typeID, payload, len, msgID);
|
||||||
if (!msg) return false;
|
if (!msg) return false;
|
||||||
i2p::HandleI2NPMessage (msg);
|
i2p::HandleI2NPMessage (msg);
|
||||||
return true;
|
return true;
|
||||||
|
@ -154,7 +154,7 @@ namespace garlic
|
|||||||
|
|
||||||
// implements GarlicDestination
|
// implements GarlicDestination
|
||||||
void HandleI2NPMessage (const uint8_t * buf, size_t len);
|
void HandleI2NPMessage (const uint8_t * buf, size_t len);
|
||||||
bool HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len);
|
bool HandleCloveI2NPMessage (I2NPMessageType typeID, const uint8_t * payload, size_t len, uint32_t msgID);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user