From 8b1e156143740a5548dc7b601d40fb141e6aae1c Mon Sep 17 00:00:00 2001 From: Jon Atack Date: Fri, 25 Dec 2020 23:56:17 +0100 Subject: Add m_inbound_onion to AttemptToEvictConnection() and an `m_is_onion` struct member to NodeEvictionCandidate and tests. We'll use these in the peer eviction logic to protect inbound onion peers in addition to the existing protection of localhost peers. --- src/net.cpp | 3 ++- src/net.h | 2 ++ src/test/fuzz/node_eviction.cpp | 1 + src/test/net_peer_eviction_tests.cpp | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/net.cpp b/src/net.cpp index b51d03de7b..a3f3377df9 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -992,7 +992,8 @@ bool CConnman::AttemptToEvictConnection() node->nLastBlockTime, node->nLastTXTime, HasAllDesirableServiceFlags(node->nServices), peer_relay_txes, peer_filter_not_null, node->nKeyedNetGroup, - node->m_prefer_evict, node->addr.IsLocal()}; + node->m_prefer_evict, node->addr.IsLocal(), + node->m_inbound_onion}; vEvictionCandidates.push_back(candidate); } } diff --git a/src/net.h b/src/net.h index c15ca32816..bf8458be6e 100644 --- a/src/net.h +++ b/src/net.h @@ -425,6 +425,7 @@ public: std::atomic nLastSend{0}; std::atomic nLastRecv{0}; + //! Unix epoch time at peer connection, in seconds. const int64_t nTimeConnected; std::atomic nTimeOffset{0}; // Address of this peer @@ -1281,6 +1282,7 @@ struct NodeEvictionCandidate uint64_t nKeyedNetGroup; bool prefer_evict; bool m_is_local; + bool m_is_onion; }; /** diff --git a/src/test/fuzz/node_eviction.cpp b/src/test/fuzz/node_eviction.cpp index 603d520cf5..70ffc6bf37 100644 --- a/src/test/fuzz/node_eviction.cpp +++ b/src/test/fuzz/node_eviction.cpp @@ -31,6 +31,7 @@ FUZZ_TARGET(node_eviction) /* nKeyedNetGroup */ fuzzed_data_provider.ConsumeIntegral(), /* prefer_evict */ fuzzed_data_provider.ConsumeBool(), /* m_is_local */ fuzzed_data_provider.ConsumeBool(), + /* m_is_onion */ fuzzed_data_provider.ConsumeBool(), }); } // Make a copy since eviction_candidates may be in some valid but otherwise diff --git a/src/test/net_peer_eviction_tests.cpp b/src/test/net_peer_eviction_tests.cpp index 418f5a4f71..517474bad4 100644 --- a/src/test/net_peer_eviction_tests.cpp +++ b/src/test/net_peer_eviction_tests.cpp @@ -36,6 +36,7 @@ std::vector GetRandomNodeEvictionCandidates(const int n_c /* nKeyedNetGroup */ random_context.randrange(100), /* prefer_evict */ random_context.randbool(), /* m_is_local */ random_context.randbool(), + /* m_is_onion */ random_context.randbool(), }); } return candidates; -- cgit v1.2.3