diff --git a/Destination.cpp b/Destination.cpp index e1c639c2..c7ceb86a 100644 --- a/Destination.cpp +++ b/Destination.cpp @@ -397,7 +397,7 @@ namespace client m_ExcludedFloodfills.insert (floodfill->GetIdentHash ()); LogPrint (eLogDebug, "Publish LeaseSet of ", GetIdentHash ().ToBase32 ()); m_PublishReplyToken = i2p::context.GetRandomNumberGenerator ().GenerateWord32 (); - auto msg = WrapMessage (floodfill, ToSharedI2NPMessage (i2p::CreateDatabaseStoreMsg (m_LeaseSet, m_PublishReplyToken))); + auto msg = WrapMessage (floodfill, i2p::CreateDatabaseStoreMsg (m_LeaseSet, m_PublishReplyToken)); m_PublishConfirmationTimer.expires_from_now (boost::posix_time::seconds(PUBLISH_CONFIRMATION_TIMEOUT)); m_PublishConfirmationTimer.async_wait (std::bind (&ClientDestination::HandlePublishConfirmationTimer, this, std::placeholders::_1)); @@ -586,8 +586,8 @@ namespace client AddSessionKey (replyKey, replyTag); auto msg = WrapMessage (nextFloodfill, - ToSharedI2NPMessage (CreateLeaseSetDatabaseLookupMsg (dest, request->excluded, - replyTunnel.get (), replyKey, replyTag))); + CreateLeaseSetDatabaseLookupMsg (dest, request->excluded, + replyTunnel.get (), replyKey, replyTag)); outboundTunnel->SendTunnelDataMsg ( { i2p::tunnel::TunnelMessageBlock diff --git a/Garlic.cpp b/Garlic.cpp index fb67b0ae..9756eb07 100644 --- a/Garlic.cpp +++ b/Garlic.cpp @@ -243,8 +243,7 @@ namespace garlic m_LeaseSetSubmissionTime = i2p::util::GetMillisecondsSinceEpoch (); // clove if our leaseSet must be attached auto leaseSet = CreateDatabaseStoreMsg (m_Owner->GetLeaseSet ()); - size += CreateGarlicClove (payload + size, leaseSet, false); - DeleteI2NPMessage (leaseSet); + size += CreateGarlicClove (payload + size, leaseSet.get (), false); //TODO (*numCloves)++; } } diff --git a/I2NPProtocol.cpp b/I2NPProtocol.cpp index 8fd493f1..d466d205 100644 --- a/I2NPProtocol.cpp +++ b/I2NPProtocol.cpp @@ -106,10 +106,10 @@ namespace i2p return ToSharedI2NPMessage (m); } - I2NPMessage * CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from, + std::shared_ptr CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from, uint32_t replyTunnelID, bool exploratory, std::set * excludedPeers) { - I2NPMessage * m = excludedPeers ? NewI2NPMessage () : NewI2NPShortMessage (); + auto m = ToSharedI2NPMessage (excludedPeers ? NewI2NPMessage () : NewI2NPShortMessage ()); uint8_t * buf = m->GetPayload (); memcpy (buf, key, 32); // key buf += 32; @@ -151,12 +151,12 @@ namespace i2p return m; } - I2NPMessage * CreateLeaseSetDatabaseLookupMsg (const i2p::data::IdentHash& dest, + std::shared_ptr CreateLeaseSetDatabaseLookupMsg (const i2p::data::IdentHash& dest, const std::set& excludedFloodfills, const i2p::tunnel::InboundTunnel * replyTunnel, const uint8_t * replyKey, const uint8_t * replyTag) { int cnt = excludedFloodfills.size (); - I2NPMessage * m = cnt > 0 ? NewI2NPMessage () : NewI2NPShortMessage (); + auto m = ToSharedI2NPMessage (cnt > 0 ? NewI2NPMessage () : NewI2NPShortMessage ()); uint8_t * buf = m->GetPayload (); memcpy (buf, dest, 32); // key buf += 32; @@ -188,10 +188,10 @@ namespace i2p return m; } - I2NPMessage * CreateDatabaseSearchReply (const i2p::data::IdentHash& ident, + std::shared_ptr CreateDatabaseSearchReply (const i2p::data::IdentHash& ident, std::vector routers) { - I2NPMessage * m = NewI2NPShortMessage (); + auto m = ToSharedI2NPMessage (NewI2NPShortMessage ()); uint8_t * buf = m->GetPayload (); size_t len = 0; memcpy (buf, ident, 32); @@ -210,12 +210,12 @@ namespace i2p return m; } - I2NPMessage * CreateDatabaseStoreMsg (std::shared_ptr router, uint32_t replyToken) + std::shared_ptr CreateDatabaseStoreMsg (std::shared_ptr router, uint32_t replyToken) { if (!router) // we send own RouterInfo router = context.GetSharedRouterInfo (); - I2NPMessage * m = NewI2NPShortMessage (); + auto m = ToSharedI2NPMessage (NewI2NPShortMessage ()); uint8_t * payload = m->GetPayload (); memcpy (payload + DATABASE_STORE_KEY_OFFSET, router->GetIdentHash (), 32); @@ -240,9 +240,8 @@ namespace i2p if (m->len + size > m->maxLen) { LogPrint (eLogInfo, "DatabaseStore message size is not enough for ", m->len + size); - auto newMsg = NewI2NPMessage (); + auto newMsg = ToSharedI2NPMessage (NewI2NPMessage ()); *newMsg = *m; - DeleteI2NPMessage (m); m = newMsg; buf = m->buf + m->len; } @@ -253,10 +252,10 @@ namespace i2p return m; } - I2NPMessage * CreateDatabaseStoreMsg (std::shared_ptr leaseSet, uint32_t replyToken) + std::shared_ptr CreateDatabaseStoreMsg (std::shared_ptr leaseSet, uint32_t replyToken) { if (!leaseSet) return nullptr; - I2NPMessage * m = NewI2NPShortMessage (); + auto m = ToSharedI2NPMessage (NewI2NPShortMessage ()); uint8_t * payload = m->GetPayload (); memcpy (payload + DATABASE_STORE_KEY_OFFSET, leaseSet->GetIdentHash (), 32); payload[DATABASE_STORE_TYPE_OFFSET] = 1; // LeaseSet diff --git a/I2NPProtocol.h b/I2NPProtocol.h index 0e6f5621..0a4c2fce 100644 --- a/I2NPProtocol.h +++ b/I2NPProtocol.h @@ -206,15 +206,15 @@ namespace tunnel std::shared_ptr CreateI2NPMessage (const uint8_t * buf, int len, std::shared_ptr from = nullptr); std::shared_ptr CreateDeliveryStatusMsg (uint32_t msgID); - I2NPMessage * CreateRouterInfoDatabaseLookupMsg (const uint8_t * key, const uint8_t * from, + std::shared_ptr 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, + std::shared_ptr CreateLeaseSetDatabaseLookupMsg (const i2p::data::IdentHash& dest, const std::set& excludedFloodfills, const i2p::tunnel::InboundTunnel * replyTunnel, const uint8_t * replyKey, const uint8_t * replyTag); - I2NPMessage * CreateDatabaseSearchReply (const i2p::data::IdentHash& ident, std::vector routers); + std::shared_ptr CreateDatabaseSearchReply (const i2p::data::IdentHash& ident, std::vector routers); - I2NPMessage * CreateDatabaseStoreMsg (std::shared_ptr router = nullptr, uint32_t replyToken = 0); - I2NPMessage * CreateDatabaseStoreMsg (std::shared_ptr leaseSet, uint32_t replyToken = 0); + std::shared_ptr CreateDatabaseStoreMsg (std::shared_ptr router = nullptr, uint32_t replyToken = 0); + std::shared_ptr CreateDatabaseStoreMsg (std::shared_ptr leaseSet, uint32_t replyToken = 0); bool HandleBuildRequestRecords (int num, uint8_t * records, uint8_t * clearText); void HandleVariableTunnelBuildMsg (uint32_t replyMsgID, uint8_t * buf, size_t len); diff --git a/NTCPSession.cpp b/NTCPSession.cpp index 86418749..878beab7 100644 --- a/NTCPSession.cpp +++ b/NTCPSession.cpp @@ -101,7 +101,7 @@ namespace transport m_DHKeysPair = nullptr; SendTimeSyncMessage (); - m_SendQueue.push_back (ToSharedI2NPMessage(CreateDatabaseStoreMsg ())); // we tell immediately who we are + m_SendQueue.push_back (CreateDatabaseStoreMsg ()); // we tell immediately who we are transports.PeerConnected (shared_from_this ()); } diff --git a/NetDb.cpp b/NetDb.cpp index 39dd6430..46e23a8a 100644 --- a/NetDb.cpp +++ b/NetDb.cpp @@ -575,7 +575,7 @@ namespace data { i2p::tunnel::eDeliveryTypeRouter, nextFloodfill->GetIdentHash (), 0, - ToSharedI2NPMessage (CreateDatabaseStoreMsg ()) + CreateDatabaseStoreMsg () }); // request destination @@ -679,7 +679,7 @@ namespace data excludedRouters.insert (r->GetIdentHash ()); } } - replyMsg = ToSharedI2NPMessage (CreateDatabaseSearchReply (ident, routers)); + replyMsg = CreateDatabaseSearchReply (ident, routers); } else { @@ -692,7 +692,7 @@ namespace data LogPrint ("Requested RouterInfo ", key, " found"); router->LoadBuffer (); if (router->GetBuffer ()) - replyMsg = ToSharedI2NPMessage (CreateDatabaseStoreMsg (router)); + replyMsg = CreateDatabaseStoreMsg (router); } } @@ -703,7 +703,7 @@ namespace data if (leaseSet) // we don't send back our LeaseSets { LogPrint ("Requested LeaseSet ", key, " found"); - replyMsg = ToSharedI2NPMessage (CreateDatabaseStoreMsg (leaseSet)); + replyMsg = CreateDatabaseStoreMsg (leaseSet); } } @@ -716,7 +716,7 @@ namespace data excludedRouters.insert (excluded); excluded += 32; } - replyMsg = ToSharedI2NPMessage (CreateDatabaseSearchReply (ident, GetClosestFloodfills (ident, 3, excludedRouters))); + replyMsg = CreateDatabaseSearchReply (ident, GetClosestFloodfills (ident, 3, excludedRouters)); } } @@ -782,7 +782,7 @@ namespace data { i2p::tunnel::eDeliveryTypeRouter, floodfill->GetIdentHash (), 0, - ToSharedI2NPMessage (CreateDatabaseStoreMsg ()) // tell floodfill about us + CreateDatabaseStoreMsg () // tell floodfill about us }); msgs.push_back (i2p::tunnel::TunnelMessageBlock { @@ -811,7 +811,7 @@ namespace data { uint32_t replyToken = i2p::context.GetRandomNumberGenerator ().GenerateWord32 (); LogPrint ("Publishing our RouterInfo to ", floodfill->GetIdentHashAbbreviation (), ". reply token=", replyToken); - transports.SendMessage (floodfill->GetIdentHash (), ToSharedI2NPMessage (CreateDatabaseStoreMsg (i2p::context.GetSharedRouterInfo (), replyToken))); + transports.SendMessage (floodfill->GetIdentHash (), CreateDatabaseStoreMsg (i2p::context.GetSharedRouterInfo (), replyToken)); excluded.insert (floodfill->GetIdentHash ()); } } diff --git a/NetDbRequests.cpp b/NetDbRequests.cpp index 5f4a3e75..a8ccf3f9 100644 --- a/NetDbRequests.cpp +++ b/NetDbRequests.cpp @@ -11,21 +11,21 @@ namespace data std::shared_ptr RequestedDestination::CreateRequestMessage (std::shared_ptr router, std::shared_ptr replyTunnel) { - I2NPMessage * msg = i2p::CreateRouterInfoDatabaseLookupMsg (m_Destination, + auto msg = i2p::CreateRouterInfoDatabaseLookupMsg (m_Destination, replyTunnel->GetNextIdentHash (), replyTunnel->GetNextTunnelID (), m_IsExploratory, &m_ExcludedPeers); m_ExcludedPeers.insert (router->GetIdentHash ()); m_CreationTime = i2p::util::GetSecondsSinceEpoch (); - return ToSharedI2NPMessage (msg); + return msg; } std::shared_ptr RequestedDestination::CreateRequestMessage (const IdentHash& floodfill) { - I2NPMessage * msg = i2p::CreateRouterInfoDatabaseLookupMsg (m_Destination, + auto msg = i2p::CreateRouterInfoDatabaseLookupMsg (m_Destination, i2p::context.GetRouterInfo ().GetIdentHash () , 0, false, &m_ExcludedPeers); m_ExcludedPeers.insert (floodfill); m_CreationTime = i2p::util::GetSecondsSinceEpoch (); - return ToSharedI2NPMessage (msg); + return msg; } void RequestedDestination::ClearExcludedPeers () diff --git a/SSUSession.cpp b/SSUSession.cpp index 3900e7de..bfd7a13b 100644 --- a/SSUSession.cpp +++ b/SSUSession.cpp @@ -783,7 +783,7 @@ namespace transport m_DHKeysPair = nullptr; } m_Data.Start (); - m_Data.Send (ToSharedI2NPMessage(CreateDatabaseStoreMsg ())); + m_Data.Send (CreateDatabaseStoreMsg ()); transports.PeerConnected (shared_from_this ()); if (m_PeerTest && (m_RemoteRouter && m_RemoteRouter->IsPeerTesting ())) SendPeerTest ();