From f8812085d1c2b9a8ea886fc7cf3070f0e2fa67ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wo=CC=81jcik?= <3044353+pwojcikdev@users.noreply.github.com> Date: Wed, 1 May 2024 13:44:05 +0200 Subject: [PATCH] Fix connection attempt checks --- nano/node/transport/tcp_listener.cpp | 36 ++++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/nano/node/transport/tcp_listener.cpp b/nano/node/transport/tcp_listener.cpp index 5fba0a6e..7cf6a0b6 100644 --- a/nano/node/transport/tcp_listener.cpp +++ b/nano/node/transport/tcp_listener.cpp @@ -229,6 +229,24 @@ bool nano::transport::tcp_listener::connect (asio::ip::address ip, uint16_t port port = node.network_params.network.default_node_port; } + if (auto count = attempts.size (); count > config.max_attempts) + { + stats.inc (nano::stat::type::tcp_listener_rejected, nano::stat::detail::max_attempts, nano::stat::dir::out); + logger.debug (nano::log::type::tcp_listener, "Max connection attempts reached ({}), rejected connection attempt: {}", + count, ip.to_string ()); + + return false; // Rejected + } + + if (auto count = count_attempts (ip); count >= config.max_attempts_per_ip) + { + stats.inc (nano::stat::type::tcp_listener_rejected, nano::stat::detail::max_attempts_per_ip, nano::stat::dir::out); + logger.debug (nano::log::type::tcp_listener, "Connection attempt already in progress ({}), rejected connection attempt: {}", + count, ip.to_string ()); + + return false; // Rejected + } + if (auto result = check_limits (ip, connection_type::outbound); result != accept_result::accepted) { stats.inc (nano::stat::type::tcp_listener, nano::stat::detail::connect_rejected, nano::stat::dir::out); @@ -462,24 +480,6 @@ auto nano::transport::tcp_listener::check_limits (asio::ip::address const & ip, return accept_result::rejected; } - - if (auto count = attempts.size (); count > config.max_attempts) - { - stats.inc (nano::stat::type::tcp_listener_rejected, nano::stat::detail::max_attempts, to_stat_dir (type)); - logger.debug (nano::log::type::tcp_listener, "Max connection attempts reached ({}), unable to initiate new connection: {}", - count, ip.to_string ()); - - return accept_result::rejected; - } - - if (auto count = count_attempts (ip); count >= config.max_attempts_per_ip) - { - stats.inc (nano::stat::type::tcp_listener_rejected, nano::stat::detail::max_attempts_per_ip, to_stat_dir (type)); - logger.debug (nano::log::type::tcp_listener, "Connection attempt already in progress ({}), unable to initiate new connection: {}", - count, ip.to_string ()); - - return accept_result::rejected; - } } return accept_result::accepted;