diff --git a/libi2pd/NTCP2.cpp b/libi2pd/NTCP2.cpp index fd20d35c..c12c5804 100644 --- a/libi2pd/NTCP2.cpp +++ b/libi2pd/NTCP2.cpp @@ -1356,8 +1356,10 @@ namespace transport if (error != boost::asio::error::operation_aborted) { - if (!conn) // connection is used + if (!conn) // connection is used, create new one conn = std::make_shared (*this); + else // reuse failed + conn->Close (); m_NTCP2Acceptor->async_accept(conn->GetSocket (), std::bind (&NTCP2Server::HandleAccept, this, conn, std::placeholders::_1)); } diff --git a/libi2pd/NTCP2.h b/libi2pd/NTCP2.h index 10f4f483..d2f1f88d 100644 --- a/libi2pd/NTCP2.h +++ b/libi2pd/NTCP2.h @@ -133,6 +133,7 @@ namespace transport void Terminate (); void TerminateByTimeout (); void Done (); + void Close () { m_Socket.close (); }; // for accept boost::asio::ip::tcp::socket& GetSocket () { return m_Socket; };