aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/addrman.cpp26
-rw-r--r--src/addrman.h44
-rw-r--r--src/test/addrman_tests.cpp2
3 files changed, 32 insertions, 40 deletions
diff --git a/src/addrman.cpp b/src/addrman.cpp
index e8f98f727b..690ea19c30 100644
--- a/src/addrman.cpp
+++ b/src/addrman.cpp
@@ -77,6 +77,32 @@ double CAddrInfo::GetChance(int64_t nNow) const
return fChance;
}
+CAddrMan::CAddrMan(bool deterministic, int32_t consistency_check_ratio)
+ : insecure_rand{deterministic}
+ , m_consistency_check_ratio{consistency_check_ratio}
+{
+ std::vector<int>().swap(vRandom);
+ nKey = insecure_rand.rand256();
+ for (size_t bucket = 0; bucket < ADDRMAN_NEW_BUCKET_COUNT; bucket++) {
+ for (size_t entry = 0; entry < ADDRMAN_BUCKET_SIZE; entry++) {
+ vvNew[bucket][entry] = -1;
+ }
+ }
+ for (size_t bucket = 0; bucket < ADDRMAN_TRIED_BUCKET_COUNT; bucket++) {
+ for (size_t entry = 0; entry < ADDRMAN_BUCKET_SIZE; entry++) {
+ vvTried[bucket][entry] = -1;
+ }
+ }
+
+ nIdCount = 0;
+ nTried = 0;
+ nNew = 0;
+ nLastGood = 1; //Initially at 1 so that "never" is strictly worse.
+ mapInfo.clear();
+ mapAddr.clear();
+ if (deterministic) nKey = uint256{1};
+}
+
CAddrInfo* CAddrMan::Find(const CNetAddr& addr, int* pnId)
{
AssertLockHeld(cs);
diff --git a/src/addrman.h b/src/addrman.h
index c2df87e986..3d49c2583f 100644
--- a/src/addrman.h
+++ b/src/addrman.h
@@ -471,40 +471,7 @@ public:
Check();
}
-private:
- void Clear()
- EXCLUSIVE_LOCKS_REQUIRED(!cs)
- {
- LOCK(cs);
- std::vector<int>().swap(vRandom);
- nKey = insecure_rand.rand256();
- for (size_t bucket = 0; bucket < ADDRMAN_NEW_BUCKET_COUNT; bucket++) {
- for (size_t entry = 0; entry < ADDRMAN_BUCKET_SIZE; entry++) {
- vvNew[bucket][entry] = -1;
- }
- }
- for (size_t bucket = 0; bucket < ADDRMAN_TRIED_BUCKET_COUNT; bucket++) {
- for (size_t entry = 0; entry < ADDRMAN_BUCKET_SIZE; entry++) {
- vvTried[bucket][entry] = -1;
- }
- }
-
- nIdCount = 0;
- nTried = 0;
- nNew = 0;
- nLastGood = 1; //Initially at 1 so that "never" is strictly worse.
- mapInfo.clear();
- mapAddr.clear();
- }
-
-public:
- explicit CAddrMan(bool deterministic, int32_t consistency_check_ratio)
- : insecure_rand{deterministic},
- m_consistency_check_ratio{consistency_check_ratio}
- {
- Clear();
- if (deterministic) nKey = uint256{1};
- }
+ explicit CAddrMan(bool deterministic, int32_t consistency_check_ratio);
~CAddrMan()
{
@@ -626,17 +593,16 @@ public:
Check();
}
-protected:
- //! secret key to randomize bucket select with
- uint256 nKey;
-
+private:
//! A mutex to protect the inner data structures.
mutable Mutex cs;
-private:
//! Source of random numbers for randomization in inner loops
mutable FastRandomContext insecure_rand GUARDED_BY(cs);
+ //! secret key to randomize bucket select with
+ uint256 nKey;
+
//! Serialization versions.
enum Format : uint8_t {
V0_HISTORICAL = 0, //!< historic format, before commit e6b343d88
diff --git a/src/test/addrman_tests.cpp b/src/test/addrman_tests.cpp
index 50be342630..cd5dc2370f 100644
--- a/src/test/addrman_tests.cpp
+++ b/src/test/addrman_tests.cpp
@@ -48,7 +48,7 @@ public:
unsigned char nVersion = 1;
s << nVersion;
s << ((unsigned char)32);
- s << nKey;
+ s << uint256::ONE;
s << 10; // nNew
s << 10; // nTried