From 206f094dd48e689adef7881518d78ee5a5b3d2bb Mon Sep 17 00:00:00 2001 From: orignal Date: Wed, 24 Jun 2015 10:45:58 -0400 Subject: [PATCH] use shared_ptr for DeliverStatus --- Garlic.cpp | 2 +- I2NPProtocol.cpp | 4 ++-- I2NPProtocol.h | 2 +- NetDb.cpp | 7 ++----- SSUSession.cpp | 2 +- TunnelPool.cpp | 2 +- 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Garlic.cpp b/Garlic.cpp index 4b89b147..d6216461 100644 --- a/Garlic.cpp +++ b/Garlic.cpp @@ -307,7 +307,7 @@ namespace garlic htobe32buf (buf + size, inboundTunnel->GetNextTunnelID ()); // tunnelID size += 4; // create msg - auto msg = ToSharedI2NPMessage (CreateDeliveryStatusMsg (msgID)); + auto msg = CreateDeliveryStatusMsg (msgID); if (m_Owner) { //encrypt diff --git a/I2NPProtocol.cpp b/I2NPProtocol.cpp index 57646b17..9057500b 100644 --- a/I2NPProtocol.cpp +++ b/I2NPProtocol.cpp @@ -90,7 +90,7 @@ namespace i2p return msg; } - I2NPMessage * CreateDeliveryStatusMsg (uint32_t msgID) + std::shared_ptr CreateDeliveryStatusMsg (uint32_t msgID) { I2NPMessage * m = NewI2NPShortMessage (); uint8_t * buf = m->GetPayload (); @@ -106,7 +106,7 @@ namespace i2p } m->len += DELIVERY_STATUS_SIZE; FillI2NPMessageHeader (m, eI2NPDeliveryStatus); - return m; + return ToSharedI2NPMessage (m); } I2NPMessage * CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from, diff --git a/I2NPProtocol.h b/I2NPProtocol.h index 4e8a8f8d..4c299f5e 100644 --- a/I2NPProtocol.h +++ b/I2NPProtocol.h @@ -203,7 +203,7 @@ namespace tunnel 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 from = nullptr); - I2NPMessage * CreateDeliveryStatusMsg (uint32_t msgID); + std::shared_ptr CreateDeliveryStatusMsg (uint32_t msgID); I2NPMessage * CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from, uint32_t replyTunnelID, bool exploratory = false, std::set * excludedPeers = nullptr); I2NPMessage * CreateLeaseSetDatabaseLookupMsg (const i2p::data::IdentHash& dest, diff --git a/NetDb.cpp b/NetDb.cpp index 36e637f1..06fd3c37 100644 --- a/NetDb.cpp +++ b/NetDb.cpp @@ -471,18 +471,15 @@ namespace data uint32_t tunnelID = bufbe32toh (buf + offset); offset += 4; if (!tunnelID) // send response directly - transports.SendMessage (buf + offset, ToSharedI2NPMessage (deliveryStatus)); + transports.SendMessage (buf + offset, deliveryStatus); else { auto pool = i2p::tunnel::tunnels.GetExploratoryPool (); auto outbound = pool ? pool->GetNextOutboundTunnel () : nullptr; if (outbound) - outbound->SendTunnelDataMsg (buf + offset, tunnelID, ToSharedI2NPMessage (deliveryStatus)); + outbound->SendTunnelDataMsg (buf + offset, tunnelID, deliveryStatus); else - { LogPrint (eLogError, "No outbound tunnels for DatabaseStore reply found"); - DeleteI2NPMessage (deliveryStatus); - } } offset += 32; diff --git a/SSUSession.cpp b/SSUSession.cpp index 39ef9df0..c8c9fb2e 100644 --- a/SSUSession.cpp +++ b/SSUSession.cpp @@ -262,7 +262,7 @@ namespace transport if (paddingSize > 0) paddingSize = 16 - paddingSize; payload += paddingSize; // TODO: verify signature (need data from session request), payload points to signature - m_Data.Send (ToSharedI2NPMessage(CreateDeliveryStatusMsg (0))); + m_Data.Send (CreateDeliveryStatusMsg (0)); Established (); } diff --git a/TunnelPool.cpp b/TunnelPool.cpp index 689d31e8..0f0eb709 100644 --- a/TunnelPool.cpp +++ b/TunnelPool.cpp @@ -254,7 +254,7 @@ namespace tunnel uint32_t msgID = rnd.GenerateWord32 (); m_Tests[msgID] = std::make_pair (*it1, *it2); (*it1)->SendTunnelDataMsg ((*it2)->GetNextIdentHash (), (*it2)->GetNextTunnelID (), - ToSharedI2NPMessage (CreateDeliveryStatusMsg (msgID))); + CreateDeliveryStatusMsg (msgID)); it1++; it2++; } }