From 7e7aee27b6e68a1f8e41f3c4f0e4864c416fe9b8 Mon Sep 17 00:00:00 2001 From: orignal Date: Sat, 26 Mar 2022 21:59:21 -0400 Subject: [PATCH] handle I2NP message block --- libi2pd/SSU2.cpp | 11 ++++++++++- libi2pd/SSU2.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libi2pd/SSU2.cpp b/libi2pd/SSU2.cpp index 0af896e7..31ea245b 100644 --- a/libi2pd/SSU2.cpp +++ b/libi2pd/SSU2.cpp @@ -600,7 +600,15 @@ namespace transport break; } case eSSU2BlkI2NPMessage: - break; + { + LogPrint (eLogDebug, "SSU2: I2NP message"); + auto nextMsg = NewI2NPShortMessage (); + nextMsg->len = nextMsg->offset + size + 7; // 7 more bytes for full I2NP header + memcpy (nextMsg->GetNTCP2Header (), buf + offset, size); + nextMsg->FromNTCP2 (); // SSU2 has the same format as NTCP2 + m_Handler.PutNextMessage (std::move (nextMsg)); + break; + } case eSSU2BlkFirstFragment: break; case eSSU2BlkFollowOnFragment: @@ -654,6 +662,7 @@ namespace transport } offset += size; } + m_Handler.Flush (); } bool SSU2Session::ExtractEndpoint (const uint8_t * buf, size_t size, boost::asio::ip::udp::endpoint& ep) diff --git a/libi2pd/SSU2.h b/libi2pd/SSU2.h index b4a2eba6..e5de9721 100644 --- a/libi2pd/SSU2.h +++ b/libi2pd/SSU2.h @@ -148,6 +148,7 @@ namespace transport SSU2SessionState m_State; uint8_t m_KeyDataSend[64], m_KeyDataReceive[64]; uint32_t m_SendPacketNum, m_ReceivePacketNum; + i2p::I2NPMessagesHandler m_Handler; }; class SSU2Server: private i2p::util::RunnableServiceWithWork