Avoid recalculating vchKeyedNetGroup in eviction logic.
Lazy calculate vchKeyedNetGroup in CNode::GetKeyedNetGroup.
This commit is contained in:
committed by
Pieter Wuille
parent
22e0b35676
commit
053930ffc4
20
src/net.h
20
src/net.h
@@ -9,6 +9,8 @@
|
||||
#include "amount.h"
|
||||
#include "bloom.h"
|
||||
#include "compat.h"
|
||||
#include "crypto/common.h"
|
||||
#include "crypto/sha256.h"
|
||||
#include "limitedmap.h"
|
||||
#include "netbase.h"
|
||||
#include "protocol.h"
|
||||
@@ -362,6 +364,8 @@ public:
|
||||
CBloomFilter* pfilter;
|
||||
int nRefCount;
|
||||
NodeId id;
|
||||
|
||||
std::vector<unsigned char> vchKeyedNetGroup;
|
||||
protected:
|
||||
|
||||
// Denial-of-service detection/prevention
|
||||
@@ -450,6 +454,22 @@ private:
|
||||
CNode(const CNode&);
|
||||
void operator=(const CNode&);
|
||||
|
||||
void CalculateKeyedNetGroup() {
|
||||
static std::vector<unsigned char> vchSecretKey;
|
||||
if (vchSecretKey.empty()) {
|
||||
vchSecretKey.resize(32, 0);
|
||||
GetRandBytes(vchSecretKey.data(), vchSecretKey.size());
|
||||
}
|
||||
|
||||
std::vector<unsigned char> vchNetGroup(this->addr.GetGroup());
|
||||
|
||||
CSHA256 hash;
|
||||
hash.Write(begin_ptr(vchNetGroup), vchNetGroup.size());
|
||||
hash.Write(begin_ptr(vchSecretKey), vchSecretKey.size());
|
||||
|
||||
vchKeyedNetGroup.resize(32, 0);
|
||||
hash.Finalize(begin_ptr(vchKeyedNetGroup));
|
||||
}
|
||||
public:
|
||||
|
||||
NodeId GetId() const {
|
||||
|
||||
Reference in New Issue
Block a user