mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-05 18:23:03 +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:
@@ -88,6 +88,8 @@ static const bool DEFAULT_BLOCKSONLY = false;
|
||||
static const int64_t DEFAULT_PEER_CONNECT_TIMEOUT = 60;
|
||||
/** Number of file descriptors required for message capture **/
|
||||
static const int NUM_FDS_MESSAGE_CAPTURE = 1;
|
||||
/** Interval for ASMap Health Check **/
|
||||
static constexpr std::chrono::hours ASMAP_HEALTH_CHECK_INTERVAL{24};
|
||||
|
||||
static constexpr bool DEFAULT_FORCEDNSSEED{false};
|
||||
static constexpr bool DEFAULT_DNSSEED{true};
|
||||
@@ -1112,6 +1114,7 @@ public:
|
||||
void SetNetworkActive(bool active);
|
||||
void OpenNetworkConnection(const CAddress& addrConnect, bool fCountFailure, CSemaphoreGrant&& grant_outbound, const char* strDest, ConnectionType conn_type, bool use_v2transport) EXCLUSIVE_LOCKS_REQUIRED(!m_unused_i2p_sessions_mutex);
|
||||
bool CheckIncomingNonce(uint64_t nonce);
|
||||
void ASMapHealthCheck();
|
||||
|
||||
// alias for thread safety annotations only, not defined
|
||||
RecursiveMutex& GetNodesMutex() const LOCK_RETURNED(m_nodes_mutex);
|
||||
@@ -1146,8 +1149,9 @@ public:
|
||||
* @param[in] max_addresses Maximum number of addresses to return (0 = all).
|
||||
* @param[in] max_pct Maximum percentage of addresses to return (0 = all).
|
||||
* @param[in] network Select only addresses of this network (nullopt = all).
|
||||
* @param[in] filtered Select only addresses that are considered high quality (false = all).
|
||||
*/
|
||||
std::vector<CAddress> GetAddresses(size_t max_addresses, size_t max_pct, std::optional<Network> network) const;
|
||||
std::vector<CAddress> GetAddresses(size_t max_addresses, size_t max_pct, std::optional<Network> network, const bool filtered = true) const;
|
||||
/**
|
||||
* Cache is used to minimize topology leaks, so it should
|
||||
* be used for all non-trusted calls, for example, p2p.
|
||||
|
||||
Reference in New Issue
Block a user