|
|
@ -64,6 +64,7 @@ |
|
|
|
const static std::string NET_MESSAGE_COMMAND_OTHER = "*other*"; |
|
|
|
const static std::string NET_MESSAGE_COMMAND_OTHER = "*other*"; |
|
|
|
|
|
|
|
|
|
|
|
static const uint64_t RANDOMIZER_ID_NETGROUP = 0x6c0edd8036ef4036ULL; // SHA256("netgroup")[0:8]
|
|
|
|
static const uint64_t RANDOMIZER_ID_NETGROUP = 0x6c0edd8036ef4036ULL; // SHA256("netgroup")[0:8]
|
|
|
|
|
|
|
|
static const uint64_t RANDOMIZER_ID_LOCALHOSTNONCE = 0xd93e69e2bbfa5735ULL; // SHA256("localhostnonce")[0:8]
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Global state variables
|
|
|
|
// Global state variables
|
|
|
|
//
|
|
|
|
//
|
|
|
@ -389,7 +390,10 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo |
|
|
|
addrman.Attempt(addrConnect, fCountFailure); |
|
|
|
addrman.Attempt(addrConnect, fCountFailure); |
|
|
|
|
|
|
|
|
|
|
|
// Add node
|
|
|
|
// Add node
|
|
|
|
CNode* pnode = new CNode(GetNewNodeId(), nLocalServices, GetBestHeight(), hSocket, addrConnect, CalculateKeyedNetGroup(addrConnect), pszDest ? pszDest : "", false); |
|
|
|
NodeId id = GetNewNodeId(); |
|
|
|
|
|
|
|
uint64_t nonce = GetDeterministicRandomizer(RANDOMIZER_ID_LOCALHOSTNONCE).Write(id).Finalize(); |
|
|
|
|
|
|
|
CNode* pnode = new CNode(id, nLocalServices, GetBestHeight(), hSocket, addrConnect, CalculateKeyedNetGroup(addrConnect), nonce, pszDest ? pszDest : "", false); |
|
|
|
|
|
|
|
|
|
|
|
GetNodeSignals().InitializeNode(pnode->GetId(), pnode); |
|
|
|
GetNodeSignals().InitializeNode(pnode->GetId(), pnode); |
|
|
|
pnode->AddRef(); |
|
|
|
pnode->AddRef(); |
|
|
|
|
|
|
|
|
|
|
@ -1024,7 +1028,10 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CNode* pnode = new CNode(GetNewNodeId(), nLocalServices, GetBestHeight(), hSocket, addr, CalculateKeyedNetGroup(addr), "", true); |
|
|
|
NodeId id = GetNewNodeId(); |
|
|
|
|
|
|
|
uint64_t nonce = GetDeterministicRandomizer(RANDOMIZER_ID_LOCALHOSTNONCE).Write(id).Finalize(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CNode* pnode = new CNode(id, nLocalServices, GetBestHeight(), hSocket, addr, CalculateKeyedNetGroup(addr), nonce, "", true); |
|
|
|
GetNodeSignals().InitializeNode(pnode->GetId(), pnode); |
|
|
|
GetNodeSignals().InitializeNode(pnode->GetId(), pnode); |
|
|
|
pnode->AddRef(); |
|
|
|
pnode->AddRef(); |
|
|
|
pnode->fWhitelisted = whitelisted; |
|
|
|
pnode->fWhitelisted = whitelisted; |
|
|
@ -2118,7 +2125,11 @@ bool CConnman::Start(boost::thread_group& threadGroup, CScheduler& scheduler, st |
|
|
|
if (pnodeLocalHost == NULL) { |
|
|
|
if (pnodeLocalHost == NULL) { |
|
|
|
CNetAddr local; |
|
|
|
CNetAddr local; |
|
|
|
LookupHost("127.0.0.1", local, false); |
|
|
|
LookupHost("127.0.0.1", local, false); |
|
|
|
pnodeLocalHost = new CNode(GetNewNodeId(), nLocalServices, GetBestHeight(), INVALID_SOCKET, CAddress(CService(local, 0), nLocalServices), 0); |
|
|
|
|
|
|
|
|
|
|
|
NodeId id = GetNewNodeId(); |
|
|
|
|
|
|
|
uint64_t nonce = GetDeterministicRandomizer(RANDOMIZER_ID_LOCALHOSTNONCE).Write(id).Finalize(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pnodeLocalHost = new CNode(id, nLocalServices, GetBestHeight(), INVALID_SOCKET, CAddress(CService(local, 0), nLocalServices), 0, nonce); |
|
|
|
GetNodeSignals().InitializeNode(pnodeLocalHost->GetId(), pnodeLocalHost); |
|
|
|
GetNodeSignals().InitializeNode(pnodeLocalHost->GetId(), pnodeLocalHost); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -2509,7 +2520,7 @@ void CNode::Fuzz(int nChance) |
|
|
|
unsigned int CConnman::GetReceiveFloodSize() const { return nReceiveFloodSize; } |
|
|
|
unsigned int CConnman::GetReceiveFloodSize() const { return nReceiveFloodSize; } |
|
|
|
unsigned int CConnman::GetSendBufferSize() const{ return nSendBufferMaxSize; } |
|
|
|
unsigned int CConnman::GetSendBufferSize() const{ return nSendBufferMaxSize; } |
|
|
|
|
|
|
|
|
|
|
|
CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn, SOCKET hSocketIn, const CAddress& addrIn, uint64_t nKeyedNetGroupIn, const std::string& addrNameIn, bool fInboundIn) : |
|
|
|
CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn, SOCKET hSocketIn, const CAddress& addrIn, uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn, const std::string& addrNameIn, bool fInboundIn) : |
|
|
|
ssSend(SER_NETWORK, INIT_PROTO_VERSION), |
|
|
|
ssSend(SER_NETWORK, INIT_PROTO_VERSION), |
|
|
|
addr(addrIn), |
|
|
|
addr(addrIn), |
|
|
|
fInbound(fInboundIn), |
|
|
|
fInbound(fInboundIn), |
|
|
@ -2517,6 +2528,7 @@ CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn |
|
|
|
nKeyedNetGroup(nKeyedNetGroupIn), |
|
|
|
nKeyedNetGroup(nKeyedNetGroupIn), |
|
|
|
addrKnown(5000, 0.001), |
|
|
|
addrKnown(5000, 0.001), |
|
|
|
filterInventoryKnown(50000, 0.000001), |
|
|
|
filterInventoryKnown(50000, 0.000001), |
|
|
|
|
|
|
|
nLocalHostNonce(nLocalHostNonceIn), |
|
|
|
nLocalServices(nLocalServicesIn), |
|
|
|
nLocalServices(nLocalServicesIn), |
|
|
|
nMyStartingHeight(nMyStartingHeightIn) |
|
|
|
nMyStartingHeight(nMyStartingHeightIn) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -2566,7 +2578,6 @@ CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn |
|
|
|
lastSentFeeFilter = 0; |
|
|
|
lastSentFeeFilter = 0; |
|
|
|
nextSendTimeFeeFilter = 0; |
|
|
|
nextSendTimeFeeFilter = 0; |
|
|
|
nOptimisticBytesWritten = 0; |
|
|
|
nOptimisticBytesWritten = 0; |
|
|
|
GetRandBytes((unsigned char*)&nLocalHostNonce, sizeof(nLocalHostNonce)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOST_FOREACH(const std::string &msg, getAllNetMessageTypes()) |
|
|
|
BOOST_FOREACH(const std::string &msg, getAllNetMessageTypes()) |
|
|
|
mapRecvBytesPerMsgCmd[msg] = 0; |
|
|
|
mapRecvBytesPerMsgCmd[msg] = 0; |
|
|
|