mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2024-11-10 01:10:32 +00:00
copy transit message for nedb
This commit is contained in:
parent
4f6c3d52b3
commit
0966369723
@ -81,6 +81,15 @@ namespace i2p
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<I2NPMessage> CopyI2NPMessage (std::shared_ptr<I2NPMessage> msg)
|
||||||
|
{
|
||||||
|
if (!msg) return nullptr;
|
||||||
|
auto newMsg = NewI2NPMessage (msg->len);
|
||||||
|
newMsg->offset = msg->offset;
|
||||||
|
*newMsg = *msg;
|
||||||
|
return newMsg;
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<I2NPMessage> CreateDeliveryStatusMsg (uint32_t msgID)
|
std::shared_ptr<I2NPMessage> CreateDeliveryStatusMsg (uint32_t msgID)
|
||||||
{
|
{
|
||||||
auto m = NewI2NPShortMessage ();
|
auto m = NewI2NPShortMessage ();
|
||||||
|
@ -215,6 +215,7 @@ namespace tunnel
|
|||||||
|
|
||||||
std::shared_ptr<I2NPMessage> CreateI2NPMessage (I2NPMessageType msgType, const uint8_t * buf, size_t len, uint32_t replyMsgID = 0);
|
std::shared_ptr<I2NPMessage> CreateI2NPMessage (I2NPMessageType msgType, const uint8_t * buf, size_t len, uint32_t replyMsgID = 0);
|
||||||
std::shared_ptr<I2NPMessage> CreateI2NPMessage (const uint8_t * buf, size_t len, std::shared_ptr<i2p::tunnel::InboundTunnel> from = nullptr);
|
std::shared_ptr<I2NPMessage> CreateI2NPMessage (const uint8_t * buf, size_t len, std::shared_ptr<i2p::tunnel::InboundTunnel> from = nullptr);
|
||||||
|
std::shared_ptr<I2NPMessage> CopyI2NPMessage (std::shared_ptr<I2NPMessage> msg);
|
||||||
|
|
||||||
std::shared_ptr<I2NPMessage> CreateDeliveryStatusMsg (uint32_t msgID);
|
std::shared_ptr<I2NPMessage> CreateDeliveryStatusMsg (uint32_t msgID);
|
||||||
std::shared_ptr<I2NPMessage> CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from,
|
std::shared_ptr<I2NPMessage> CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from,
|
||||||
|
@ -494,7 +494,7 @@ namespace tunnel
|
|||||||
if (IsRouterInfoMsg (msg) || 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 (CopyI2NPMessage (msg));
|
||||||
tunnel->SendTunnelDataMsg (msg);
|
tunnel->SendTunnelDataMsg (msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,6 +237,11 @@ namespace tunnel
|
|||||||
}
|
}
|
||||||
auto typeID = msg.data->GetTypeID ();
|
auto typeID = msg.data->GetTypeID ();
|
||||||
LogPrint (eLogDebug, "TunnelMessage: handle fragment of ", msg.data->GetLength (), " bytes, msg type ", (int)typeID);
|
LogPrint (eLogDebug, "TunnelMessage: handle fragment of ", msg.data->GetLength (), " bytes, msg type ", (int)typeID);
|
||||||
|
// catch RI or reply with new list of routers
|
||||||
|
if ((IsRouterInfoMsg (msg.data) || typeID == eI2NPDatabaseSearchReply) &&
|
||||||
|
!m_IsInbound && msg.deliveryType != eDeliveryTypeLocal)
|
||||||
|
i2p::data::netdb.PostI2NPMsg (CopyI2NPMessage (msg.data));
|
||||||
|
|
||||||
switch (msg.deliveryType)
|
switch (msg.deliveryType)
|
||||||
{
|
{
|
||||||
case eDeliveryTypeLocal:
|
case eDeliveryTypeLocal:
|
||||||
@ -257,10 +262,6 @@ namespace tunnel
|
|||||||
default:
|
default:
|
||||||
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
|
|
||||||
if ((IsRouterInfoMsg (msg.data) || typeID == eI2NPDatabaseSearchReply) &&
|
|
||||||
!m_IsInbound && msg.deliveryType != eDeliveryTypeLocal)
|
|
||||||
i2p::data::netdb.PostI2NPMsg (msg.data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user