| 24 | } |
| 25 | |
| 26 | int CAddrInfo::GetNewBucket(const vector<unsigned char> &nKey, const CNetAddr& src) const |
| 27 | { |
| 28 | CDataStream ss1(SER_GETHASH, 0); |
| 29 | vector<unsigned char> vchGroupKey = GetGroup(); |
| 30 | vector<unsigned char> vchSourceGroupKey = src.GetGroup(); |
| 31 | ss1 << nKey << vchGroupKey << vchSourceGroupKey; |
| 32 | uint64_t hash1 = Hash(ss1.begin(), ss1.end()).GetCheapHash(); |
| 33 | |
| 34 | CDataStream ss2(SER_GETHASH, 0); |
| 35 | ss2 << nKey << vchSourceGroupKey << (hash1 % ADDRMAN_NEW_BUCKETS_PER_SOURCE_GROUP); |
| 36 | uint64_t hash2 = Hash(ss2.begin(), ss2.end()).GetCheapHash(); |
| 37 | return hash2 % ADDRMAN_NEW_BUCKET_COUNT; |
| 38 | } |
| 39 | |
| 40 | bool CAddrInfo::IsTerrible(int64_t nNow) const |
| 41 | { |