diff --git a/libi2pd/NTCP2.cpp b/libi2pd/NTCP2.cpp index 3ba5b4d3..a78b24b0 100644 --- a/libi2pd/NTCP2.cpp +++ b/libi2pd/NTCP2.cpp @@ -1024,22 +1024,16 @@ namespace transport { if (!m_SendQueue.empty ()) { - auto buf = m_Server.NewNTCP2FrameBuffer (); - uint8_t * payload = buf->data (); + std::vector > msgs; size_t s = 0; - // add I2NP blocks while (!m_SendQueue.empty ()) { auto msg = m_SendQueue.front (); size_t len = msg->GetNTCP2Length (); if (s + len + 3 <= NTCP2_UNENCRYPTED_FRAME_MAX_SIZE) // 3 bytes block header { - payload[s] = eNTCP2BlkI2NPMessage; // blk - htobe16buf (payload + s + 1, len); // size - s += 3; - msg->ToNTCP2 (); - memcpy (payload + s, msg->GetNTCP2Header (), len); - s += len; + msgs.push_back (msg); + s += (len + 3); m_SendQueue.pop_front (); } else if (len + 3 > NTCP2_UNENCRYPTED_FRAME_MAX_SIZE) @@ -1050,11 +1044,7 @@ namespace transport else break; } - // add padding block - s += CreatePaddingBlock (s, payload + s, NTCP2_UNENCRYPTED_FRAME_MAX_SIZE - s); - // send - SendNextFrame (payload, s); - m_Server.DeleteNTCP2FrameBuffer (buf); + SendI2NPMsgs (msgs); } } diff --git a/libi2pd/NTCP2.h b/libi2pd/NTCP2.h index 20b60c0d..ee7ce892 100644 --- a/libi2pd/NTCP2.h +++ b/libi2pd/NTCP2.h @@ -76,7 +76,6 @@ namespace transport // RouterInfo flags const uint8_t NTCP2_ROUTER_INFO_FLAG_REQUEST_FLOOD = 0x01; - typedef std::array NTCP2FrameBuffer; struct NTCP2Establisher { NTCP2Establisher (); @@ -236,9 +235,6 @@ namespace transport void Connect(const boost::asio::ip::address & address, uint16_t port, std::shared_ptr conn); - NTCP2FrameBuffer * NewNTCP2FrameBuffer () { return m_NTCP2FrameBuffersPool.Acquire(); } - void DeleteNTCP2FrameBuffer (NTCP2FrameBuffer * buf) { return m_NTCP2FrameBuffersPool.Release(buf); } - private: void Run (); @@ -262,8 +258,6 @@ namespace transport std::map > m_NTCP2Sessions; std::list > m_PendingIncomingSessions; - i2p::util::MemoryPool m_NTCP2FrameBuffersPool; - public: // for HTTP/I2PControl