diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2015-03-08 06:30:05 -0700 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2015-04-01 16:38:31 +0200 |
commit | b78899425602085c759f7c889a6ddbb8ea5f6d38 (patch) | |
tree | 9797cbd6bf2796a457ccfa77205d6992b92d903a /src/addrman.h | |
parent | 90bef6638fc689c13924fc17d115d5866b425e6c (diff) | |
download | bitcoin-b78899425602085c759f7c889a6ddbb8ea5f6d38.tar.xz |
Switch addrman key from vector to uint256
Conflicts:
src/addrman.cpp
Rebased-From: b23add5521e4207085d41a0266617e94435fc22e
Github-Pull: #5941
Diffstat (limited to 'src/addrman.h')
-rw-r--r-- | src/addrman.h | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/addrman.h b/src/addrman.h index d47217683c..b73266f843 100644 --- a/src/addrman.h +++ b/src/addrman.h @@ -10,6 +10,7 @@ #include "random.h" #include "sync.h" #include "timedata.h" +#include "uint256.h" #include "util.h" #include <map> @@ -79,13 +80,13 @@ public: } //! Calculate in which "tried" bucket this entry belongs - int GetTriedBucket(const std::vector<unsigned char> &nKey) const; + int GetTriedBucket(const uint256 &nKey) const; //! Calculate in which "new" bucket this entry belongs, given a certain source - int GetNewBucket(const std::vector<unsigned char> &nKey, const CNetAddr& src) const; + int GetNewBucket(const uint256 &nKey, const CNetAddr& src) const; //! Calculate in which "new" bucket this entry belongs, using its default source - int GetNewBucket(const std::vector<unsigned char> &nKey) const + int GetNewBucket(const uint256 &nKey) const { return GetNewBucket(nKey, source); } @@ -176,7 +177,7 @@ private: mutable CCriticalSection cs; //! secret key to randomize bucket select with - std::vector<unsigned char> nKey; + uint256 nKey; //! last used nId int nIdCount; @@ -284,6 +285,7 @@ public: unsigned char nVersion = 0; s << nVersion; + s << ((unsigned char)32); s << nKey; s << nNew; s << nTried; @@ -328,6 +330,9 @@ public: unsigned char nVersion; s >> nVersion; + unsigned char nKeySize; + s >> nKeySize; + if (nKeySize != 32) throw std::ios_base::failure("Incorrect keysize in addrman"); s >> nKey; s >> nNew; s >> nTried; @@ -393,14 +398,18 @@ public: CAddrMan() : vRandom(0), vvTried(ADDRMAN_TRIED_BUCKET_COUNT, std::vector<int>(0)), vvNew(ADDRMAN_NEW_BUCKET_COUNT, std::set<int>()) { - nKey.resize(32); - GetRandBytes(&nKey[0], 32); + nKey = GetRandHash(); nIdCount = 0; nTried = 0; nNew = 0; } + ~CAddrMan() + { + nKey = uint256(0); + } + //! Return the number of (unique) addresses in all tables. int size() { |