|
|
@ -10,30 +10,30 @@ |
|
|
|
|
|
|
|
|
|
|
|
using namespace std; |
|
|
|
using namespace std; |
|
|
|
|
|
|
|
|
|
|
|
int CAddrInfo::GetTriedBucket(const std::vector<unsigned char>& nKey) const |
|
|
|
int CAddrInfo::GetTriedBucket(const uint256& nKey) const |
|
|
|
{ |
|
|
|
{ |
|
|
|
CDataStream ss1(SER_GETHASH, 0); |
|
|
|
CDataStream ss1(SER_GETHASH, 0); |
|
|
|
std::vector<unsigned char> vchKey = GetKey(); |
|
|
|
std::vector<unsigned char> vchKey = GetKey(); |
|
|
|
ss1 << nKey << vchKey; |
|
|
|
ss1 << ((unsigned char)32) << nKey << vchKey; |
|
|
|
uint64_t hash1 = Hash(ss1.begin(), ss1.end()).GetCheapHash(); |
|
|
|
uint64_t hash1 = Hash(ss1.begin(), ss1.end()).GetCheapHash(); |
|
|
|
|
|
|
|
|
|
|
|
CDataStream ss2(SER_GETHASH, 0); |
|
|
|
CDataStream ss2(SER_GETHASH, 0); |
|
|
|
std::vector<unsigned char> vchGroupKey = GetGroup(); |
|
|
|
std::vector<unsigned char> vchGroupKey = GetGroup(); |
|
|
|
ss2 << nKey << vchGroupKey << (hash1 % ADDRMAN_TRIED_BUCKETS_PER_GROUP); |
|
|
|
ss2 << ((unsigned char)32) << nKey << vchGroupKey << (hash1 % ADDRMAN_TRIED_BUCKETS_PER_GROUP); |
|
|
|
uint64_t hash2 = Hash(ss2.begin(), ss2.end()).GetCheapHash(); |
|
|
|
uint64_t hash2 = Hash(ss2.begin(), ss2.end()).GetCheapHash(); |
|
|
|
return hash2 % ADDRMAN_TRIED_BUCKET_COUNT; |
|
|
|
return hash2 % ADDRMAN_TRIED_BUCKET_COUNT; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int CAddrInfo::GetNewBucket(const std::vector<unsigned char>& nKey, const CNetAddr& src) const |
|
|
|
int CAddrInfo::GetNewBucket(const uint256& nKey, const CNetAddr& src) const |
|
|
|
{ |
|
|
|
{ |
|
|
|
CDataStream ss1(SER_GETHASH, 0); |
|
|
|
CDataStream ss1(SER_GETHASH, 0); |
|
|
|
std::vector<unsigned char> vchGroupKey = GetGroup(); |
|
|
|
std::vector<unsigned char> vchGroupKey = GetGroup(); |
|
|
|
std::vector<unsigned char> vchSourceGroupKey = src.GetGroup(); |
|
|
|
std::vector<unsigned char> vchSourceGroupKey = src.GetGroup(); |
|
|
|
ss1 << nKey << vchGroupKey << vchSourceGroupKey; |
|
|
|
ss1 << ((unsigned char)32) << nKey << vchGroupKey << vchSourceGroupKey; |
|
|
|
uint64_t hash1 = Hash(ss1.begin(), ss1.end()).GetCheapHash(); |
|
|
|
uint64_t hash1 = Hash(ss1.begin(), ss1.end()).GetCheapHash(); |
|
|
|
|
|
|
|
|
|
|
|
CDataStream ss2(SER_GETHASH, 0); |
|
|
|
CDataStream ss2(SER_GETHASH, 0); |
|
|
|
ss2 << nKey << vchSourceGroupKey << (hash1 % ADDRMAN_NEW_BUCKETS_PER_SOURCE_GROUP); |
|
|
|
ss2 << ((unsigned char)32) << nKey << vchSourceGroupKey << (hash1 % ADDRMAN_NEW_BUCKETS_PER_SOURCE_GROUP); |
|
|
|
uint64_t hash2 = Hash(ss2.begin(), ss2.end()).GetCheapHash(); |
|
|
|
uint64_t hash2 = Hash(ss2.begin(), ss2.end()).GetCheapHash(); |
|
|
|
return hash2 % ADDRMAN_NEW_BUCKET_COUNT; |
|
|
|
return hash2 % ADDRMAN_NEW_BUCKET_COUNT; |
|
|
|
} |
|
|
|
} |
|
|
@ -483,6 +483,8 @@ int CAddrMan::Check_() |
|
|
|
return -13; |
|
|
|
return -13; |
|
|
|
if (mapNew.size()) |
|
|
|
if (mapNew.size()) |
|
|
|
return -15; |
|
|
|
return -15; |
|
|
|
|
|
|
|
if (nKey.IsNull()) |
|
|
|
|
|
|
|
return -16; |
|
|
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|