From 6b6df15dd9c246485fc90d144dd49a9861f7bc92 Mon Sep 17 00:00:00 2001 From: orignal Date: Sat, 31 Dec 2016 10:51:42 -0500 Subject: [PATCH] eliminate ban list overhead --- NTCPSession.cpp | 47 ++++------------------------------------------- NTCPSession.h | 6 +----- 2 files changed, 5 insertions(+), 48 deletions(-) diff --git a/NTCPSession.cpp b/NTCPSession.cpp index 81cfe687..712006c4 100644 --- a/NTCPSession.cpp +++ b/NTCPSession.cpp @@ -116,16 +116,10 @@ namespace transport void NTCPSession::ServerLogin () { - boost::system::error_code ec; - auto ep = m_Socket.remote_endpoint(ec); - if (!ec) - { - m_ConnectedFrom = ep.address (); - // receive Phase1 - boost::asio::async_read (m_Socket, boost::asio::buffer(&m_Establisher->phase1, sizeof (NTCPPhase1)), boost::asio::transfer_all (), - std::bind(&NTCPSession::HandlePhase1Received, shared_from_this (), - std::placeholders::_1, std::placeholders::_2)); - } + // receive Phase1 + boost::asio::async_read (m_Socket, boost::asio::buffer(&m_Establisher->phase1, sizeof (NTCPPhase1)), boost::asio::transfer_all (), + std::bind(&NTCPSession::HandlePhase1Received, shared_from_this (), + std::placeholders::_1, std::placeholders::_2)); } void NTCPSession::HandlePhase1Sent (const boost::system::error_code& ecode, std::size_t bytes_transferred) @@ -502,8 +496,6 @@ namespace transport if (ecode) { if (ecode != boost::asio::error::operation_aborted) LogPrint (eLogDebug, "NTCP: Read error: ", ecode.message ()); - if (!m_NumReceivedBytes) - m_Server.Ban (m_ConnectedFrom); //if (ecode != boost::asio::error::operation_aborted) Terminate (); } @@ -890,18 +882,6 @@ namespace transport if (!ec) { LogPrint (eLogDebug, "NTCP: Connected from ", ep); - auto it = m_BanList.find (ep.address ()); - if (it != m_BanList.end ()) - { - uint32_t ts = i2p::util::GetSecondsSinceEpoch (); - if (ts < it->second) - { - LogPrint (eLogWarning, "NTCP: ", ep.address (), " is banned for ", it->second - ts, " more seconds"); - conn = nullptr; - } - else - m_BanList.erase (it); - } if (conn) conn->ServerLogin (); } @@ -927,18 +907,6 @@ namespace transport if (!ec) { LogPrint (eLogDebug, "NTCP: Connected from ", ep); - auto it = m_BanList.find (ep.address ()); - if (it != m_BanList.end ()) - { - uint32_t ts = i2p::util::GetSecondsSinceEpoch (); - if (ts < it->second) - { - LogPrint (eLogWarning, "NTCP: ", ep.address (), " is banned for ", it->second - ts, " more seconds"); - conn = nullptr; - } - else - m_BanList.erase (it); - } if (conn) conn->ServerLogin (); } @@ -996,13 +964,6 @@ namespace transport } } - void NTCPServer::Ban (const boost::asio::ip::address& addr) - { - uint32_t ts = i2p::util::GetSecondsSinceEpoch (); - m_BanList[addr] = ts + NTCP_BAN_EXPIRATION_TIMEOUT; - LogPrint (eLogWarning, "NTCP: ", addr, " has been banned for ", NTCP_BAN_EXPIRATION_TIMEOUT, " seconds"); - } - void NTCPServer::ScheduleTermination () { m_TerminationTimer.expires_from_now (boost::posix_time::seconds(NTCP_TERMINATION_CHECK_TIMEOUT)); diff --git a/NTCPSession.h b/NTCPSession.h index 639942f2..b02543be 100644 --- a/NTCPSession.h +++ b/NTCPSession.h @@ -122,8 +122,6 @@ namespace transport bool m_IsSending; std::vector > m_SendQueue; - - boost::asio::ip::address m_ConnectedFrom; // for ban }; // TODO: move to NTCP.h/.cpp @@ -145,8 +143,7 @@ namespace transport bool IsBoundV4() const { return m_NTCPAcceptor != nullptr; }; bool IsBoundV6() const { return m_NTCPV6Acceptor != nullptr; }; - boost::asio::io_service& GetService () { return m_Service; }; - void Ban (const boost::asio::ip::address& addr); + boost::asio::io_service& GetService () { return m_Service; }; private: @@ -169,7 +166,6 @@ namespace transport boost::asio::deadline_timer m_TerminationTimer; boost::asio::ip::tcp::acceptor * m_NTCPAcceptor, * m_NTCPV6Acceptor; std::map > m_NTCPSessions; // access from m_Thread only - std::map m_BanList; // IP -> ban expiration time in seconds public: