From 8d7fde0287a064877401c674dcf2c3cffb180b4f Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Tue, 20 Feb 2018 11:43:13 -0500 Subject: [PATCH] more --- libi2pd/NTCPSession.cpp | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/libi2pd/NTCPSession.cpp b/libi2pd/NTCPSession.cpp index 653c24e5..549bb2fe 100644 --- a/libi2pd/NTCPSession.cpp +++ b/libi2pd/NTCPSession.cpp @@ -196,7 +196,7 @@ namespace transport m_Encryption.SetIV (y + 240); m_Decryption.SetIV (m_Establisher->phase1.HXxorHI + 16); - + m_Encryption.Encrypt ((uint8_t *)&m_Establisher->phase2.encrypted, sizeof(m_Establisher->phase2.encrypted), (uint8_t *)&m_Establisher->phase2.encrypted); boost::asio::async_write (m_Socket, boost::asio::buffer (&m_Establisher->phase2, sizeof (NTCPPhase2)), boost::asio::transfer_all (), std::bind(&NTCPSession::HandlePhase2Sent, shared_from_this (), std::placeholders::_1, std::placeholders::_2, tsB)); @@ -237,24 +237,11 @@ namespace transport } else { -#if ((__GNUC__ == 4) && (__GNUC_MINOR__ <= 7)) || defined(__NetBSD__) -// due the bug in gcc 4.7. std::shared_future.get() is not const - CreateAESKey (m_Establisher->phase2.pubKey); - HandlePhase2 (); -#else auto s = shared_from_this (); - // create AES key in separate thread - auto keyCreated = std::async (std::launch::async, [s] () - { - s->CreateAESKey (s->m_Establisher->phase2.pubKey); - }).share (); // TODO: use move capture in C++ 14 instead shared_future - // let other operations execute while a key gets created - m_Server.GetService ().post ([s, keyCreated]() - { - keyCreated.get (); // we might wait if no more pending operations - s->HandlePhase2 (); - }); -#endif + m_Server.Work(s, [s]() -> std::function { + s->CreateAESKey (s->m_Establisher->phase2.pubKey); + return std::bind(&NTCPSession::HandlePhase2, s); + }); } }