From 0abb871f3ffe013110920adf70c8e2f9ee17caeb Mon Sep 17 00:00:00 2001 From: orignal Date: Wed, 20 Nov 2019 13:00:50 -0500 Subject: [PATCH] close socket after if accept failed --- libi2pd/NTCP2.cpp | 4 +++- libi2pd/NTCP2.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) 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; };