mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 00:00:29 +03:00
ignore LeaseSets coming from transit tunnels
This commit is contained in:
parent
727436e1cf
commit
a26c5f85c3
@ -268,6 +268,12 @@ namespace i2p
|
|||||||
m->FillI2NPMessageHeader (eI2NPDatabaseStore);
|
m->FillI2NPMessageHeader (eI2NPDatabaseStore);
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsRouterInfoMsg (std::shared_ptr<I2NPMessage> msg)
|
||||||
|
{
|
||||||
|
if (!msg || msg->GetTypeID () != eI2NPDatabaseStore) return false;
|
||||||
|
return !msg->GetPayload ()[DATABASE_STORE_TYPE_OFFSET]; // 0- RouterInfo
|
||||||
|
}
|
||||||
|
|
||||||
bool HandleBuildRequestRecords (int num, uint8_t * records, uint8_t * clearText)
|
bool HandleBuildRequestRecords (int num, uint8_t * records, uint8_t * clearText)
|
||||||
{
|
{
|
||||||
|
@ -213,7 +213,8 @@ namespace tunnel
|
|||||||
|
|
||||||
std::shared_ptr<I2NPMessage> CreateDatabaseStoreMsg (std::shared_ptr<const i2p::data::RouterInfo> router = nullptr, uint32_t replyToken = 0);
|
std::shared_ptr<I2NPMessage> CreateDatabaseStoreMsg (std::shared_ptr<const i2p::data::RouterInfo> router = nullptr, uint32_t replyToken = 0);
|
||||||
std::shared_ptr<I2NPMessage> CreateDatabaseStoreMsg (std::shared_ptr<const i2p::data::LeaseSet> leaseSet, uint32_t replyToken = 0);
|
std::shared_ptr<I2NPMessage> CreateDatabaseStoreMsg (std::shared_ptr<const i2p::data::LeaseSet> leaseSet, uint32_t replyToken = 0);
|
||||||
|
bool IsRouterInfoMsg (std::shared_ptr<I2NPMessage> msg);
|
||||||
|
|
||||||
bool HandleBuildRequestRecords (int num, uint8_t * records, uint8_t * clearText);
|
bool HandleBuildRequestRecords (int num, uint8_t * records, uint8_t * clearText);
|
||||||
void HandleVariableTunnelBuildMsg (uint32_t replyMsgID, uint8_t * buf, size_t len);
|
void HandleVariableTunnelBuildMsg (uint32_t replyMsgID, uint8_t * buf, size_t len);
|
||||||
void HandleVariableTunnelBuildReplyMsg (uint32_t replyMsgID, uint8_t * buf, size_t len);
|
void HandleVariableTunnelBuildReplyMsg (uint32_t replyMsgID, uint8_t * buf, size_t len);
|
||||||
|
@ -486,7 +486,7 @@ namespace tunnel
|
|||||||
auto typeID = msg->GetTypeID ();
|
auto typeID = msg->GetTypeID ();
|
||||||
LogPrint (eLogDebug, "TunnelGateway of ", (int)len, " bytes for tunnel ", tunnel->GetTunnelID (), ". Msg type ", (int)typeID);
|
LogPrint (eLogDebug, "TunnelGateway of ", (int)len, " bytes for tunnel ", tunnel->GetTunnelID (), ". Msg type ", (int)typeID);
|
||||||
|
|
||||||
if (typeID == eI2NPDatabaseStore || typeID == eI2NPDatabaseSearchReply)
|
if (IsRouterInfoMsg (msg) || typeID == eI2NPDatabaseSearchReply)
|
||||||
// transit DatabaseStore my contain new/updated RI
|
// transit DatabaseStore my contain new/updated RI
|
||||||
// or DatabaseSearchReply with new routers
|
// or DatabaseSearchReply with new routers
|
||||||
i2p::data::netdb.PostI2NPMsg (msg);
|
i2p::data::netdb.PostI2NPMsg (msg);
|
||||||
|
@ -248,7 +248,7 @@ namespace tunnel
|
|||||||
LogPrint (eLogError, "TunnelMessage: Unknown delivery type ", (int)msg.deliveryType);
|
LogPrint (eLogError, "TunnelMessage: Unknown delivery type ", (int)msg.deliveryType);
|
||||||
};
|
};
|
||||||
// catch RI or reply with new list of routers
|
// catch RI or reply with new list of routers
|
||||||
if ((typeID == eI2NPDatabaseStore || typeID == eI2NPDatabaseSearchReply) &&
|
if ((IsRouterInfoMsg (msg.data) || typeID == eI2NPDatabaseSearchReply) &&
|
||||||
!m_IsInbound && msg.deliveryType != eDeliveryTypeLocal)
|
!m_IsInbound && msg.deliveryType != eDeliveryTypeLocal)
|
||||||
i2p::data::netdb.PostI2NPMsg (msg.data);
|
i2p::data::netdb.PostI2NPMsg (msg.data);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user