mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-05 18:52:29 +02:00
Merge bitcoin/bitcoin#29436: net: call Select with reachable networks in ThreadOpenConnections
e4e3b44e9cnet: call `Select` with reachable networks in `ThreadOpenConnections` (brunoerg)829becd990addrman: change `Select` to support multiple networks (brunoerg)f698636ec8net: add `All()` in `ReachableNets` (brunoerg) Pull request description: This PR changes addrman's `Select` to support multiple networks and change `ThreadOpenConnections` to call it with reachable networks. It can avoid unnecessary `Select` calls and avoid exceeding the max number of tries (100), especially when turning a clearnet + Tor/I2P/CJDNS node to Tor/I2P/CJDNS. Compared to #29330, this approach is "less aggresive". It does not add a new init flag and does not impact address relay. I did an experiment of calling `Select` without passing a network until it finds an address from a network that compose 20% ~ 25% of the addrman (limited to 100 tries).  ACKs for top commit: achow101: ACKe4e3b44e9cvasild: ACKe4e3b44e9cnaumenkogs: ACKe4e3b44e9cTree-SHA512: e8466b72b85bbc2ad8bfb14471eb27d2c50d4e84218f5ede2c15a6fa3653af61b488cde492dbd398f7502bd847e95bfee1abb7e01092daba2236d3ce3d6d2268
This commit is contained in:
@@ -285,7 +285,15 @@ FUZZ_TARGET(addrman, .init = initialize_addrman)
|
||||
auto max_pct = fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, 4096);
|
||||
auto filtered = fuzzed_data_provider.ConsumeBool();
|
||||
(void)const_addr_man.GetAddr(max_addresses, max_pct, network, filtered);
|
||||
(void)const_addr_man.Select(fuzzed_data_provider.ConsumeBool(), network);
|
||||
|
||||
std::unordered_set<Network> nets;
|
||||
for (const auto& net : ALL_NETWORKS) {
|
||||
if (fuzzed_data_provider.ConsumeBool()) {
|
||||
nets.insert(net);
|
||||
}
|
||||
}
|
||||
(void)const_addr_man.Select(fuzzed_data_provider.ConsumeBool(), nets);
|
||||
|
||||
std::optional<bool> in_new;
|
||||
if (fuzzed_data_provider.ConsumeBool()) {
|
||||
in_new = fuzzed_data_provider.ConsumeBool();
|
||||
|
||||
Reference in New Issue
Block a user