@ -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,12 +2520,17 @@ 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 ) ,
id ( idIn ) ,
nKeyedNetGroup ( nKeyedNetGroupIn ) ,
nKeyedNetGroup ( nKeyedNetGroupIn ) ,
addrKnown ( 5000 , 0.001 ) ,
addrKnown ( 5000 , 0.001 ) ,
filterInventoryKnown ( 50000 , 0.000001 )
filterInventoryKnown ( 50000 , 0.000001 ) ,
nLocalHostNonce ( nLocalHostNonceIn ) ,
nLocalServices ( nLocalServicesIn ) ,
nMyStartingHeight ( nMyStartingHeightIn )
{
{
nServices = NODE_NONE ;
nServices = NODE_NONE ;
nServicesExpected = NODE_NONE ;
nServicesExpected = NODE_NONE ;
@ -2533,7 +2549,6 @@ CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn
fOneShot = false ;
fOneShot = false ;
fClient = false ; // set by version message
fClient = false ; // set by version message
fFeeler = false ;
fFeeler = false ;
fInbound = fInboundIn ;
fNetworkNode = false ;
fNetworkNode = false ;
fSuccessfullyConnected = false ;
fSuccessfullyConnected = false ;
fDisconnect = false ;
fDisconnect = false ;
@ -2562,12 +2577,7 @@ CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn
minFeeFilter = 0 ;
minFeeFilter = 0 ;
lastSentFeeFilter = 0 ;
lastSentFeeFilter = 0 ;
nextSendTimeFeeFilter = 0 ;
nextSendTimeFeeFilter = 0 ;
id = idIn ;
nOptimisticBytesWritten = 0 ;
nOptimisticBytesWritten = 0 ;
nLocalServices = nLocalServicesIn ;
GetRandBytes ( ( unsigned char * ) & nLocalHostNonce , sizeof ( nLocalHostNonce ) ) ;
nMyStartingHeight = nMyStartingHeightIn ;
BOOST_FOREACH ( const std : : string & msg , getAllNetMessageTypes ( ) )
BOOST_FOREACH ( const std : : string & msg , getAllNetMessageTypes ( ) )
mapRecvBytesPerMsgCmd [ msg ] = 0 ;
mapRecvBytesPerMsgCmd [ msg ] = 0 ;