diff --git a/Destination.cpp b/Destination.cpp index d98de3f7..e1c639c2 100644 --- a/Destination.cpp +++ b/Destination.cpp @@ -233,6 +233,10 @@ namespace client case eI2NPData: HandleDataMessage (buf + I2NP_HEADER_SIZE, bufbe16toh (buf + I2NP_HEADER_SIZE_OFFSET)); break; + case eI2NPDeliveryStatus: + // we assume tunnel tests non-encrypted + HandleDeliveryStatusMessage (CreateI2NPMessage (buf, GetI2NPMessageLength (buf), from)); + break; case eI2NPDatabaseStore: HandleDatabaseStoreMessage (buf + I2NP_HEADER_SIZE, bufbe16toh (buf + I2NP_HEADER_SIZE_OFFSET)); break; @@ -240,7 +244,7 @@ namespace client HandleDatabaseSearchReplyMessage (buf + I2NP_HEADER_SIZE, bufbe16toh (buf + I2NP_HEADER_SIZE_OFFSET)); break; default: - i2p::HandleI2NPMessage (ToSharedI2NPMessage (CreateI2NPMessage (buf, GetI2NPMessageLength (buf), from))); + i2p::HandleI2NPMessage (CreateI2NPMessage (buf, GetI2NPMessageLength (buf), from)); } } diff --git a/Garlic.cpp b/Garlic.cpp index d6216461..00a943e2 100644 --- a/Garlic.cpp +++ b/Garlic.cpp @@ -508,8 +508,8 @@ namespace garlic tunnel = from->GetTunnelPool ()->GetNextOutboundTunnel (); if (tunnel) // we have send it through an outbound tunnel { - I2NPMessage * msg = CreateI2NPMessage (buf, GetI2NPMessageLength (buf), from); - tunnel->SendTunnelDataMsg (gwHash, gwTunnel, ToSharedI2NPMessage (msg)); + auto msg = CreateI2NPMessage (buf, GetI2NPMessageLength (buf), from); + tunnel->SendTunnelDataMsg (gwHash, gwTunnel, msg); } else LogPrint ("No outbound tunnels available for garlic clove"); diff --git a/I2NPProtocol.cpp b/I2NPProtocol.cpp index 98c008d8..0c9d82da 100644 --- a/I2NPProtocol.cpp +++ b/I2NPProtocol.cpp @@ -76,7 +76,7 @@ namespace i2p return msg; } - I2NPMessage * CreateI2NPMessage (const uint8_t * buf, int len, std::shared_ptr from) + std::shared_ptr CreateI2NPMessage (const uint8_t * buf, int len, std::shared_ptr from) { I2NPMessage * msg = NewI2NPMessage (); if (msg->offset + len < msg->maxLen) @@ -87,7 +87,7 @@ namespace i2p } else LogPrint (eLogError, "I2NP message length ", len, " exceeds max length"); - return msg; + return ToSharedI2NPMessage(msg); } std::shared_ptr CreateDeliveryStatusMsg (uint32_t msgID) diff --git a/I2NPProtocol.h b/I2NPProtocol.h index 026801c5..98e5f1c5 100644 --- a/I2NPProtocol.h +++ b/I2NPProtocol.h @@ -202,7 +202,7 @@ namespace tunnel void FillI2NPMessageHeader (I2NPMessage * msg, I2NPMessageType msgType, uint32_t replyMsgID = 0); void RenewI2NPMessageHeader (I2NPMessage * msg); 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); + 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, diff --git a/RouterContext.cpp b/RouterContext.cpp index 29815b06..c9328b5c 100644 --- a/RouterContext.cpp +++ b/RouterContext.cpp @@ -296,7 +296,7 @@ namespace i2p void RouterContext::HandleI2NPMessage (const uint8_t * buf, size_t len, std::shared_ptr from) { - i2p::HandleI2NPMessage (ToSharedI2NPMessage(CreateI2NPMessage (buf, GetI2NPMessageLength (buf), from))); + i2p::HandleI2NPMessage (CreateI2NPMessage (buf, GetI2NPMessageLength (buf), from)); } void RouterContext::ProcessGarlicMessage (std::shared_ptr msg)