mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-10 22:18:54 +01:00
Merge bitcoin/bitcoin#27581: net: Continuous ASMap health check
3ea54e5db7net: Add continuous ASMap health check logging (Fabian Jahr)28d7e55dfftest: Add tests for unfiltered GetAddr usage (Fabian Jahr)b8843d37aefuzz: Let fuzzers use filter options in GetAddr/GetAddresses (Fabian Jahr)e16f420547net: Optionally include terrible addresses in GetAddr results (Fabian Jahr) Pull request description: There are certain statistics we can collect by running all our known clearnet addresses against the ASMap file. This could show issues with a maliciously manipulated file or with an old file that has decayed with time. This is just a proof of concept for now. My idea currently is to run the analysis once per day and print the results to logs if an ASMap file is used. ACKs for top commit: achow101: ACK3ea54e5db7mzumsande: ACK3ea54e5db7brunoerg: crACK3ea54e5db7Tree-SHA512: 777acbfac43cc43ce4a0a3612434e4ddbc65f59ae8ffc9e24f21de09011bccb297f0599cbaa82bcf40ef68e5af582c4e98556379db7ceff7d9f97574a1cf8e09
This commit is contained in:
@@ -802,7 +802,7 @@ int AddrManImpl::GetEntry(bool use_tried, size_t bucket, size_t position) const
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::vector<CAddress> AddrManImpl::GetAddr_(size_t max_addresses, size_t max_pct, std::optional<Network> network) const
|
||||
std::vector<CAddress> AddrManImpl::GetAddr_(size_t max_addresses, size_t max_pct, std::optional<Network> network, const bool filtered) const
|
||||
{
|
||||
AssertLockHeld(cs);
|
||||
|
||||
@@ -832,7 +832,7 @@ std::vector<CAddress> AddrManImpl::GetAddr_(size_t max_addresses, size_t max_pct
|
||||
if (network != std::nullopt && ai.GetNetClass() != network) continue;
|
||||
|
||||
// Filter for quality
|
||||
if (ai.IsTerrible(now)) continue;
|
||||
if (ai.IsTerrible(now) && filtered) continue;
|
||||
|
||||
addresses.push_back(ai);
|
||||
}
|
||||
@@ -1216,11 +1216,11 @@ std::pair<CAddress, NodeSeconds> AddrManImpl::Select(bool new_only, std::optiona
|
||||
return addrRet;
|
||||
}
|
||||
|
||||
std::vector<CAddress> AddrManImpl::GetAddr(size_t max_addresses, size_t max_pct, std::optional<Network> network) const
|
||||
std::vector<CAddress> AddrManImpl::GetAddr(size_t max_addresses, size_t max_pct, std::optional<Network> network, const bool filtered) const
|
||||
{
|
||||
LOCK(cs);
|
||||
Check();
|
||||
auto addresses = GetAddr_(max_addresses, max_pct, network);
|
||||
auto addresses = GetAddr_(max_addresses, max_pct, network, filtered);
|
||||
Check();
|
||||
return addresses;
|
||||
}
|
||||
@@ -1319,9 +1319,9 @@ std::pair<CAddress, NodeSeconds> AddrMan::Select(bool new_only, std::optional<Ne
|
||||
return m_impl->Select(new_only, network);
|
||||
}
|
||||
|
||||
std::vector<CAddress> AddrMan::GetAddr(size_t max_addresses, size_t max_pct, std::optional<Network> network) const
|
||||
std::vector<CAddress> AddrMan::GetAddr(size_t max_addresses, size_t max_pct, std::optional<Network> network, const bool filtered) const
|
||||
{
|
||||
return m_impl->GetAddr(max_addresses, max_pct, network);
|
||||
return m_impl->GetAddr(max_addresses, max_pct, network, filtered);
|
||||
}
|
||||
|
||||
std::vector<std::pair<AddrInfo, AddressPosition>> AddrMan::GetEntries(bool use_tried) const
|
||||
|
||||
Reference in New Issue
Block a user