diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2023-03-01 16:56:17 +0000 |
---|---|---|
committer | selsta <selsta@sent.at> | 2023-03-19 02:58:38 +0100 |
commit | f0e326be58f5ac78e3aa1de29db848a895f5e62b (patch) | |
tree | 4f8117a0ba71e9145a24ddd8a478016cb53df892 | |
parent | Merge pull request #8739 (diff) | |
download | monero-f0e326be58f5ac78e3aa1de29db848a895f5e62b.tar.xz |
p2p: avoid spam blocking ipv4 addresses in a blocked subnet
-rw-r--r-- | src/p2p/net_node.inl | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index ee6bd8b19..733c7acf7 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -247,7 +247,23 @@ namespace nodetool if (it == m_blocked_hosts.end()) { m_blocked_hosts[host_str] = limit; - added = true; + + // if the host was already blocked due to being in a blocked subnet, let it be silent + bool matches_blocked_subnet = false; + if (addr.get_type_id() == epee::net_utils::address_type::ipv4) + { + auto ipv4_address = addr.template as<epee::net_utils::ipv4_network_address>(); + for (auto jt = m_blocked_subnets.begin(); jt != m_blocked_subnets.end(); ++jt) + { + if (jt->first.matches(ipv4_address)) + { + matches_blocked_subnet = true; + break; + } + } + } + if (!matches_blocked_subnet) + added = true; } else if (it->second < limit || !add_only) it->second = limit; |