mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-02 23:34:14 +00:00
use shared_ptr for DeliverStatus
This commit is contained in:
parent
a05a20440e
commit
206f094dd4
@ -307,7 +307,7 @@ namespace garlic
|
|||||||
htobe32buf (buf + size, inboundTunnel->GetNextTunnelID ()); // tunnelID
|
htobe32buf (buf + size, inboundTunnel->GetNextTunnelID ()); // tunnelID
|
||||||
size += 4;
|
size += 4;
|
||||||
// create msg
|
// create msg
|
||||||
auto msg = ToSharedI2NPMessage (CreateDeliveryStatusMsg (msgID));
|
auto msg = CreateDeliveryStatusMsg (msgID);
|
||||||
if (m_Owner)
|
if (m_Owner)
|
||||||
{
|
{
|
||||||
//encrypt
|
//encrypt
|
||||||
|
@ -90,7 +90,7 @@ namespace i2p
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
I2NPMessage * CreateDeliveryStatusMsg (uint32_t msgID)
|
std::shared_ptr<I2NPMessage> CreateDeliveryStatusMsg (uint32_t msgID)
|
||||||
{
|
{
|
||||||
I2NPMessage * m = NewI2NPShortMessage ();
|
I2NPMessage * m = NewI2NPShortMessage ();
|
||||||
uint8_t * buf = m->GetPayload ();
|
uint8_t * buf = m->GetPayload ();
|
||||||
@ -106,7 +106,7 @@ namespace i2p
|
|||||||
}
|
}
|
||||||
m->len += DELIVERY_STATUS_SIZE;
|
m->len += DELIVERY_STATUS_SIZE;
|
||||||
FillI2NPMessageHeader (m, eI2NPDeliveryStatus);
|
FillI2NPMessageHeader (m, eI2NPDeliveryStatus);
|
||||||
return m;
|
return ToSharedI2NPMessage (m);
|
||||||
}
|
}
|
||||||
|
|
||||||
I2NPMessage * CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from,
|
I2NPMessage * CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from,
|
||||||
|
@ -203,7 +203,7 @@ namespace tunnel
|
|||||||
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, std::shared_ptr<i2p::tunnel::InboundTunnel> from = nullptr);
|
I2NPMessage * CreateI2NPMessage (const uint8_t * buf, int len, std::shared_ptr<i2p::tunnel::InboundTunnel> from = nullptr);
|
||||||
|
|
||||||
I2NPMessage * CreateDeliveryStatusMsg (uint32_t msgID);
|
std::shared_ptr<I2NPMessage> CreateDeliveryStatusMsg (uint32_t msgID);
|
||||||
I2NPMessage * CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from,
|
I2NPMessage * CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from,
|
||||||
uint32_t replyTunnelID, bool exploratory = false, std::set<i2p::data::IdentHash> * excludedPeers = nullptr);
|
uint32_t replyTunnelID, bool exploratory = false, std::set<i2p::data::IdentHash> * excludedPeers = nullptr);
|
||||||
I2NPMessage * CreateLeaseSetDatabaseLookupMsg (const i2p::data::IdentHash& dest,
|
I2NPMessage * CreateLeaseSetDatabaseLookupMsg (const i2p::data::IdentHash& dest,
|
||||||
|
@ -471,18 +471,15 @@ namespace data
|
|||||||
uint32_t tunnelID = bufbe32toh (buf + offset);
|
uint32_t tunnelID = bufbe32toh (buf + offset);
|
||||||
offset += 4;
|
offset += 4;
|
||||||
if (!tunnelID) // send response directly
|
if (!tunnelID) // send response directly
|
||||||
transports.SendMessage (buf + offset, ToSharedI2NPMessage (deliveryStatus));
|
transports.SendMessage (buf + offset, deliveryStatus);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
auto pool = i2p::tunnel::tunnels.GetExploratoryPool ();
|
auto pool = i2p::tunnel::tunnels.GetExploratoryPool ();
|
||||||
auto outbound = pool ? pool->GetNextOutboundTunnel () : nullptr;
|
auto outbound = pool ? pool->GetNextOutboundTunnel () : nullptr;
|
||||||
if (outbound)
|
if (outbound)
|
||||||
outbound->SendTunnelDataMsg (buf + offset, tunnelID, ToSharedI2NPMessage (deliveryStatus));
|
outbound->SendTunnelDataMsg (buf + offset, tunnelID, deliveryStatus);
|
||||||
else
|
else
|
||||||
{
|
|
||||||
LogPrint (eLogError, "No outbound tunnels for DatabaseStore reply found");
|
LogPrint (eLogError, "No outbound tunnels for DatabaseStore reply found");
|
||||||
DeleteI2NPMessage (deliveryStatus);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
offset += 32;
|
offset += 32;
|
||||||
|
|
||||||
|
@ -262,7 +262,7 @@ namespace transport
|
|||||||
if (paddingSize > 0) paddingSize = 16 - paddingSize;
|
if (paddingSize > 0) paddingSize = 16 - paddingSize;
|
||||||
payload += paddingSize;
|
payload += paddingSize;
|
||||||
// TODO: verify signature (need data from session request), payload points to signature
|
// TODO: verify signature (need data from session request), payload points to signature
|
||||||
m_Data.Send (ToSharedI2NPMessage(CreateDeliveryStatusMsg (0)));
|
m_Data.Send (CreateDeliveryStatusMsg (0));
|
||||||
Established ();
|
Established ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,7 +254,7 @@ namespace tunnel
|
|||||||
uint32_t msgID = rnd.GenerateWord32 ();
|
uint32_t msgID = rnd.GenerateWord32 ();
|
||||||
m_Tests[msgID] = std::make_pair (*it1, *it2);
|
m_Tests[msgID] = std::make_pair (*it1, *it2);
|
||||||
(*it1)->SendTunnelDataMsg ((*it2)->GetNextIdentHash (), (*it2)->GetNextTunnelID (),
|
(*it1)->SendTunnelDataMsg ((*it2)->GetNextIdentHash (), (*it2)->GetNextTunnelID (),
|
||||||
ToSharedI2NPMessage (CreateDeliveryStatusMsg (msgID)));
|
CreateDeliveryStatusMsg (msgID));
|
||||||
it1++; it2++;
|
it1++; it2++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user