@ -4171,14 +4171,14 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
if ( ! ReadBlockFromDisk ( block , ( * mi ) . second , consensusParams ) )
if ( ! ReadBlockFromDisk ( block , ( * mi ) . second , consensusParams ) )
assert ( ! " cannot load block from disk " ) ;
assert ( ! " cannot load block from disk " ) ;
if ( inv . type = = MSG_BLOCK )
if ( inv . type = = MSG_BLOCK )
pfrom - > PushMessage ( " block " , block ) ;
pfrom - > PushMessage ( NetMsgType : : BLOCK , block ) ;
else // MSG_FILTERED_BLOCK)
else // MSG_FILTERED_BLOCK)
{
{
LOCK ( pfrom - > cs_filter ) ;
LOCK ( pfrom - > cs_filter ) ;
if ( pfrom - > pfilter )
if ( pfrom - > pfilter )
{
{
CMerkleBlock merkleBlock ( block , * pfrom - > pfilter ) ;
CMerkleBlock merkleBlock ( block , * pfrom - > pfilter ) ;
pfrom - > PushMessage ( " merkleblock " , merkleBlock ) ;
pfrom - > PushMessage ( NetMsgType : : MERKLEBLOCK , merkleBlock ) ;
// CMerkleBlock just contains hashes, so also push any transactions in the block the client did not see
// CMerkleBlock just contains hashes, so also push any transactions in the block the client did not see
// This avoids hurting performance by pointlessly requiring a round-trip
// This avoids hurting performance by pointlessly requiring a round-trip
// Note that there is currently no way for a node to request any single transactions we didn't send here -
// Note that there is currently no way for a node to request any single transactions we didn't send here -
@ -4187,7 +4187,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
// however we MUST always provide at least what the remote peer needs
// however we MUST always provide at least what the remote peer needs
typedef std : : pair < unsigned int , uint256 > PairType ;
typedef std : : pair < unsigned int , uint256 > PairType ;
BOOST_FOREACH ( PairType & pair , merkleBlock . vMatchedTxn )
BOOST_FOREACH ( PairType & pair , merkleBlock . vMatchedTxn )
pfrom - > PushMessage ( " tx " , block . vtx [ pair . first ] ) ;
pfrom - > PushMessage ( NetMsgType : : TX , block . vtx [ pair . first ] ) ;
}
}
// else
// else
// no response
// no response
@ -4201,7 +4201,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
// wait for other stuff first.
// wait for other stuff first.
vector < CInv > vInv ;
vector < CInv > vInv ;
vInv . push_back ( CInv ( MSG_BLOCK , chainActive . Tip ( ) - > GetBlockHash ( ) ) ) ;
vInv . push_back ( CInv ( MSG_BLOCK , chainActive . Tip ( ) - > GetBlockHash ( ) ) ) ;
pfrom - > PushMessage ( " inv " , vInv ) ;
pfrom - > PushMessage ( NetMsgType : : INV , vInv ) ;
pfrom - > hashContinue . SetNull ( ) ;
pfrom - > hashContinue . SetNull ( ) ;
}
}
}
}
@ -4224,7 +4224,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
CDataStream ss ( SER_NETWORK , PROTOCOL_VERSION ) ;
CDataStream ss ( SER_NETWORK , PROTOCOL_VERSION ) ;
ss . reserve ( 1000 ) ;
ss . reserve ( 1000 ) ;
ss < < tx ;
ss < < tx ;
pfrom - > PushMessage ( " tx " , ss ) ;
pfrom - > PushMessage ( NetMsgType : : TX , ss ) ;
pushed = true ;
pushed = true ;
}
}
}
}
@ -4251,7 +4251,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
// do that because they want to know about (and store and rebroadcast and
// do that because they want to know about (and store and rebroadcast and
// risk analyze) the dependencies of transactions relevant to them, without
// risk analyze) the dependencies of transactions relevant to them, without
// having to download the entire memory pool.
// having to download the entire memory pool.
pfrom - > PushMessage ( " notfound " , vNotFound ) ;
pfrom - > PushMessage ( NetMsgType : : NOTFOUND , vNotFound ) ;
}
}
}
}
@ -4268,9 +4268,9 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
if ( ! ( nLocalServices & NODE_BLOOM ) & &
if ( ! ( nLocalServices & NODE_BLOOM ) & &
( strCommand = = " filterload " | |
( strCommand = = NetMsgType : : FILTERLOAD | |
strCommand = = " filteradd " | |
strCommand = = NetMsgType : : FILTERADD | |
strCommand = = " filterclear " ) )
strCommand = = NetMsgType : : FILTERCLEAR ) )
{
{
if ( pfrom - > nVersion > = NO_BLOOM_VERSION ) {
if ( pfrom - > nVersion > = NO_BLOOM_VERSION ) {
Misbehaving ( pfrom - > GetId ( ) , 100 ) ;
Misbehaving ( pfrom - > GetId ( ) , 100 ) ;
@ -4282,12 +4282,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
if ( strCommand = = " version " )
if ( strCommand = = NetMsgType : : VERSION )
{
{
// Each connection can only send one version message
// Each connection can only send one version message
if ( pfrom - > nVersion ! = 0 )
if ( pfrom - > nVersion ! = 0 )
{
{
pfrom - > PushMessage ( " reject " , strCommand , REJECT_DUPLICATE , string ( " Duplicate version message " ) ) ;
pfrom - > PushMessage ( NetMsgType : : REJECT , strCommand , REJECT_DUPLICATE , string ( " Duplicate version message " ) ) ;
Misbehaving ( pfrom - > GetId ( ) , 1 ) ;
Misbehaving ( pfrom - > GetId ( ) , 1 ) ;
return false ;
return false ;
}
}
@ -4301,7 +4301,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
{
{
// disconnect from peers older than this proto version
// disconnect from peers older than this proto version
LogPrintf ( " peer=%d using obsolete version %i; disconnecting \n " , pfrom - > id , pfrom - > nVersion ) ;
LogPrintf ( " peer=%d using obsolete version %i; disconnecting \n " , pfrom - > id , pfrom - > nVersion ) ;
pfrom - > PushMessage ( " reject " , strCommand , REJECT_OBSOLETE ,
pfrom - > PushMessage ( NetMsgType : : REJECT , strCommand , REJECT_OBSOLETE ,
strprintf ( " Version must be %d or greater " , MIN_PEER_PROTO_VERSION ) ) ;
strprintf ( " Version must be %d or greater " , MIN_PEER_PROTO_VERSION ) ) ;
pfrom - > fDisconnect = true ;
pfrom - > fDisconnect = true ;
return false ;
return false ;
@ -4346,7 +4346,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
UpdatePreferredDownload ( pfrom , State ( pfrom - > GetId ( ) ) ) ;
UpdatePreferredDownload ( pfrom , State ( pfrom - > GetId ( ) ) ) ;
// Change version
// Change version
pfrom - > PushMessage ( " verack " ) ;
pfrom - > PushMessage ( NetMsgType : : VERACK ) ;
pfrom - > ssSend . SetVersion ( min ( pfrom - > nVersion , PROTOCOL_VERSION ) ) ;
pfrom - > ssSend . SetVersion ( min ( pfrom - > nVersion , PROTOCOL_VERSION ) ) ;
if ( ! pfrom - > fInbound )
if ( ! pfrom - > fInbound )
@ -4369,7 +4369,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// Get recent addresses
// Get recent addresses
if ( pfrom - > fOneShot | | pfrom - > nVersion > = CADDR_TIME_VERSION | | addrman . size ( ) < 1000 )
if ( pfrom - > fOneShot | | pfrom - > nVersion > = CADDR_TIME_VERSION | | addrman . size ( ) < 1000 )
{
{
pfrom - > PushMessage ( " getaddr " ) ;
pfrom - > PushMessage ( NetMsgType : : GETADDR ) ;
pfrom - > fGetAddr = true ;
pfrom - > fGetAddr = true ;
}
}
addrman . Good ( pfrom - > addr ) ;
addrman . Good ( pfrom - > addr ) ;
@ -4413,7 +4413,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( strCommand = = " verack " )
else if ( strCommand = = NetMsgType : : VERACK )
{
{
pfrom - > SetRecvVersion ( min ( pfrom - > nVersion , PROTOCOL_VERSION ) ) ;
pfrom - > SetRecvVersion ( min ( pfrom - > nVersion , PROTOCOL_VERSION ) ) ;
@ -4428,12 +4428,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// We send this to non-NODE NETWORK peers as well, because even
// We send this to non-NODE NETWORK peers as well, because even
// non-NODE NETWORK peers can announce blocks (such as pruning
// non-NODE NETWORK peers can announce blocks (such as pruning
// nodes)
// nodes)
pfrom - > PushMessage ( " sendheaders " ) ;
pfrom - > PushMessage ( NetMsgType : : SENDHEADERS ) ;
}
}
}
}
else if ( strCommand = = " addr " )
else if ( strCommand = = NetMsgType : : ADDR )
{
{
vector < CAddress > vAddr ;
vector < CAddress > vAddr ;
vRecv > > vAddr ;
vRecv > > vAddr ;
@ -4499,14 +4499,14 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
pfrom - > fDisconnect = true ;
pfrom - > fDisconnect = true ;
}
}
else if ( strCommand = = " sendheaders " )
else if ( strCommand = = NetMsgType : : SENDHEADERS )
{
{
LOCK ( cs_main ) ;
LOCK ( cs_main ) ;
State ( pfrom - > GetId ( ) ) - > fPreferHeaders = true ;
State ( pfrom - > GetId ( ) ) - > fPreferHeaders = true ;
}
}
else if ( strCommand = = " inv " )
else if ( strCommand = = NetMsgType : : INV )
{
{
vector < CInv > vInv ;
vector < CInv > vInv ;
vRecv > > vInv ;
vRecv > > vInv ;
@ -4547,7 +4547,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// time the block arrives, the header chain leading up to it is already validated. Not
// time the block arrives, the header chain leading up to it is already validated. Not
// doing this will result in the received block being rejected as an orphan in case it is
// doing this will result in the received block being rejected as an orphan in case it is
// not a direct successor.
// not a direct successor.
pfrom - > PushMessage ( " getheaders " , chainActive . GetLocator ( pindexBestHeader ) , inv . hash ) ;
pfrom - > PushMessage ( NetMsgType : : GETHEADERS , chainActive . GetLocator ( pindexBestHeader ) , inv . hash ) ;
CNodeState * nodestate = State ( pfrom - > GetId ( ) ) ;
CNodeState * nodestate = State ( pfrom - > GetId ( ) ) ;
if ( CanDirectFetch ( chainparams . GetConsensus ( ) ) & &
if ( CanDirectFetch ( chainparams . GetConsensus ( ) ) & &
nodestate - > nBlocksInFlight < MAX_BLOCKS_IN_TRANSIT_PER_PEER ) {
nodestate - > nBlocksInFlight < MAX_BLOCKS_IN_TRANSIT_PER_PEER ) {
@ -4577,11 +4577,11 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
if ( ! vToFetch . empty ( ) )
if ( ! vToFetch . empty ( ) )
pfrom - > PushMessage ( " getdata " , vToFetch ) ;
pfrom - > PushMessage ( NetMsgType : : GETDATA , vToFetch ) ;
}
}
else if ( strCommand = = " getdata " )
else if ( strCommand = = NetMsgType : : GETDATA )
{
{
vector < CInv > vInv ;
vector < CInv > vInv ;
vRecv > > vInv ;
vRecv > > vInv ;
@ -4602,7 +4602,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( strCommand = = " getblocks " )
else if ( strCommand = = NetMsgType : : GETBLOCKS )
{
{
CBlockLocator locator ;
CBlockLocator locator ;
uint256 hashStop ;
uint256 hashStop ;
@ -4646,7 +4646,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( strCommand = = " getheaders " )
else if ( strCommand = = NetMsgType : : GETHEADERS )
{
{
CBlockLocator locator ;
CBlockLocator locator ;
uint256 hashStop ;
uint256 hashStop ;
@ -4691,11 +4691,11 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// headers message). In both cases it's safe to update
// headers message). In both cases it's safe to update
// pindexBestHeaderSent to be our tip.
// pindexBestHeaderSent to be our tip.
nodestate - > pindexBestHeaderSent = pindex ? pindex : chainActive . Tip ( ) ;
nodestate - > pindexBestHeaderSent = pindex ? pindex : chainActive . Tip ( ) ;
pfrom - > PushMessage ( " headers " , vHeaders ) ;
pfrom - > PushMessage ( NetMsgType : : HEADERS , vHeaders ) ;
}
}
else if ( strCommand = = " tx " )
else if ( strCommand = = NetMsgType : : TX )
{
{
// Stop processing the transaction early if
// Stop processing the transaction early if
// We are in blocks only mode and peer is either not whitelisted or whitelistalwaysrelay is off
// We are in blocks only mode and peer is either not whitelisted or whitelistalwaysrelay is off
@ -4824,7 +4824,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
pfrom - > id ,
pfrom - > id ,
FormatStateMessage ( state ) ) ;
FormatStateMessage ( state ) ) ;
if ( state . GetRejectCode ( ) < REJECT_INTERNAL ) // Never send AcceptToMemoryPool's internal codes over P2P
if ( state . GetRejectCode ( ) < REJECT_INTERNAL ) // Never send AcceptToMemoryPool's internal codes over P2P
pfrom - > PushMessage ( " reject " , strCommand , ( unsigned char ) state . GetRejectCode ( ) ,
pfrom - > PushMessage ( NetMsgType : : REJECT , strCommand , ( unsigned char ) state . GetRejectCode ( ) ,
state . GetRejectReason ( ) . substr ( 0 , MAX_REJECT_MESSAGE_LENGTH ) , inv . hash ) ;
state . GetRejectReason ( ) . substr ( 0 , MAX_REJECT_MESSAGE_LENGTH ) , inv . hash ) ;
if ( nDoS > 0 )
if ( nDoS > 0 )
Misbehaving ( pfrom - > GetId ( ) , nDoS ) ;
Misbehaving ( pfrom - > GetId ( ) , nDoS ) ;
@ -4833,7 +4833,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( strCommand = = " headers " & & ! fImporting & & ! fReindex ) // Ignore headers received while importing
else if ( strCommand = = NetMsgType : : HEADERS & & ! fImporting & & ! fReindex ) // Ignore headers received while importing
{
{
std : : vector < CBlockHeader > headers ;
std : : vector < CBlockHeader > headers ;
@ -4881,7 +4881,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// TODO: optimize: if pindexLast is an ancestor of chainActive.Tip or pindexBestHeader, continue
// TODO: optimize: if pindexLast is an ancestor of chainActive.Tip or pindexBestHeader, continue
// from there instead.
// from there instead.
LogPrint ( " net " , " more getheaders (%d) to end to peer=%d (startheight:%d) \n " , pindexLast - > nHeight , pfrom - > id , pfrom - > nStartingHeight ) ;
LogPrint ( " net " , " more getheaders (%d) to end to peer=%d (startheight:%d) \n " , pindexLast - > nHeight , pfrom - > id , pfrom - > nStartingHeight ) ;
pfrom - > PushMessage ( " getheaders " , chainActive . GetLocator ( pindexLast ) , uint256 ( ) ) ;
pfrom - > PushMessage ( NetMsgType : : GETHEADERS , chainActive . GetLocator ( pindexLast ) , uint256 ( ) ) ;
}
}
bool fCanDirectFetch = CanDirectFetch ( chainparams . GetConsensus ( ) ) ;
bool fCanDirectFetch = CanDirectFetch ( chainparams . GetConsensus ( ) ) ;
@ -4926,7 +4926,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
pindexLast - > GetBlockHash ( ) . ToString ( ) , pindexLast - > nHeight ) ;
pindexLast - > GetBlockHash ( ) . ToString ( ) , pindexLast - > nHeight ) ;
}
}
if ( vGetData . size ( ) > 0 ) {
if ( vGetData . size ( ) > 0 ) {
pfrom - > PushMessage ( " getdata " , vGetData ) ;
pfrom - > PushMessage ( NetMsgType : : GETDATA , vGetData ) ;
}
}
}
}
}
}
@ -4934,7 +4934,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
CheckBlockIndex ( chainparams . GetConsensus ( ) ) ;
CheckBlockIndex ( chainparams . GetConsensus ( ) ) ;
}
}
else if ( strCommand = = " block " & & ! fImporting & & ! fReindex ) // Ignore blocks received while importing
else if ( strCommand = = NetMsgType : : BLOCK & & ! fImporting & & ! fReindex ) // Ignore blocks received while importing
{
{
CBlock block ;
CBlock block ;
vRecv > > block ;
vRecv > > block ;
@ -4954,7 +4954,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
int nDoS ;
int nDoS ;
if ( state . IsInvalid ( nDoS ) ) {
if ( state . IsInvalid ( nDoS ) ) {
assert ( state . GetRejectCode ( ) < REJECT_INTERNAL ) ; // Blocks are never rejected with internal reject codes
assert ( state . GetRejectCode ( ) < REJECT_INTERNAL ) ; // Blocks are never rejected with internal reject codes
pfrom - > PushMessage ( " reject " , strCommand , ( unsigned char ) state . GetRejectCode ( ) ,
pfrom - > PushMessage ( NetMsgType : : REJECT , strCommand , ( unsigned char ) state . GetRejectCode ( ) ,
state . GetRejectReason ( ) . substr ( 0 , MAX_REJECT_MESSAGE_LENGTH ) , inv . hash ) ;
state . GetRejectReason ( ) . substr ( 0 , MAX_REJECT_MESSAGE_LENGTH ) , inv . hash ) ;
if ( nDoS > 0 ) {
if ( nDoS > 0 ) {
LOCK ( cs_main ) ;
LOCK ( cs_main ) ;
@ -4970,7 +4970,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// to users' AddrMan and later request them by sending getaddr messages.
// to users' AddrMan and later request them by sending getaddr messages.
// Making nodes which are behind NAT and can only make outgoing connections ignore
// Making nodes which are behind NAT and can only make outgoing connections ignore
// the getaddr message mitigates the attack.
// the getaddr message mitigates the attack.
else if ( ( strCommand = = " getaddr " ) & & ( pfrom - > fInbound ) )
else if ( ( strCommand = = NetMsgType : : GETADDR ) & & ( pfrom - > fInbound ) )
{
{
pfrom - > vAddrToSend . clear ( ) ;
pfrom - > vAddrToSend . clear ( ) ;
vector < CAddress > vAddr = addrman . GetAddr ( ) ;
vector < CAddress > vAddr = addrman . GetAddr ( ) ;
@ -4979,7 +4979,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( strCommand = = " mempool " )
else if ( strCommand = = NetMsgType : : MEMPOOL )
{
{
if ( CNode : : OutboundTargetReached ( false ) & & ! pfrom - > fWhitelisted )
if ( CNode : : OutboundTargetReached ( false ) & & ! pfrom - > fWhitelisted )
{
{
@ -5002,16 +5002,16 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
vInv . push_back ( inv ) ;
vInv . push_back ( inv ) ;
if ( vInv . size ( ) = = MAX_INV_SZ ) {
if ( vInv . size ( ) = = MAX_INV_SZ ) {
pfrom - > PushMessage ( " inv " , vInv ) ;
pfrom - > PushMessage ( NetMsgType : : INV , vInv ) ;
vInv . clear ( ) ;
vInv . clear ( ) ;
}
}
}
}
if ( vInv . size ( ) > 0 )
if ( vInv . size ( ) > 0 )
pfrom - > PushMessage ( " inv " , vInv ) ;
pfrom - > PushMessage ( NetMsgType : : INV , vInv ) ;
}
}
else if ( strCommand = = " ping " )
else if ( strCommand = = NetMsgType : : PING )
{
{
if ( pfrom - > nVersion > BIP0031_VERSION )
if ( pfrom - > nVersion > BIP0031_VERSION )
{
{
@ -5028,12 +5028,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// it, if the remote node sends a ping once per second and this node takes 5
// it, if the remote node sends a ping once per second and this node takes 5
// seconds to respond to each, the 5th ping the remote sends would appear to
// seconds to respond to each, the 5th ping the remote sends would appear to
// return very quickly.
// return very quickly.
pfrom - > PushMessage ( " pong " , nonce ) ;
pfrom - > PushMessage ( NetMsgType : : PONG , nonce ) ;
}
}
}
}
else if ( strCommand = = " pong " )
else if ( strCommand = = NetMsgType : : PONG )
{
{
int64_t pingUsecEnd = nTimeReceived ;
int64_t pingUsecEnd = nTimeReceived ;
uint64_t nonce = 0 ;
uint64_t nonce = 0 ;
@ -5090,7 +5090,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( fAlerts & & strCommand = = " alert " )
else if ( fAlerts & & strCommand = = NetMsgType : : ALERT )
{
{
CAlert alert ;
CAlert alert ;
vRecv > > alert ;
vRecv > > alert ;
@ -5121,7 +5121,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( strCommand = = " filterload " )
else if ( strCommand = = NetMsgType : : FILTERLOAD )
{
{
CBloomFilter filter ;
CBloomFilter filter ;
vRecv > > filter ;
vRecv > > filter ;
@ -5140,7 +5140,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( strCommand = = " filteradd " )
else if ( strCommand = = NetMsgType : : FILTERADD )
{
{
vector < unsigned char > vData ;
vector < unsigned char > vData ;
vRecv > > vData ;
vRecv > > vData ;
@ -5160,7 +5160,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( strCommand = = " filterclear " )
else if ( strCommand = = NetMsgType : : FILTERCLEAR )
{
{
LOCK ( pfrom - > cs_filter ) ;
LOCK ( pfrom - > cs_filter ) ;
delete pfrom - > pfilter ;
delete pfrom - > pfilter ;
@ -5169,7 +5169,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
}
else if ( strCommand = = " reject " )
else if ( strCommand = = NetMsgType : : REJECT )
{
{
if ( fDebug ) {
if ( fDebug ) {
try {
try {
@ -5179,7 +5179,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
ostringstream ss ;
ostringstream ss ;
ss < < strMsg < < " code " < < itostr ( ccode ) < < " : " < < strReason ;
ss < < strMsg < < " code " < < itostr ( ccode ) < < " : " < < strReason ;
if ( strMsg = = " block " | | strMsg = = " tx " )
if ( strMsg = = NetMsgType : : BLOCK | | strMsg = = NetMsgType : : TX )
{
{
uint256 hash ;
uint256 hash ;
vRecv > > hash ;
vRecv > > hash ;
@ -5287,7 +5287,7 @@ bool ProcessMessages(CNode* pfrom)
}
}
catch ( const std : : ios_base : : failure & e )
catch ( const std : : ios_base : : failure & e )
{
{
pfrom - > PushMessage ( " reject " , strCommand , REJECT_MALFORMED , string ( " error parsing message " ) ) ;
pfrom - > PushMessage ( NetMsgType : : REJECT , strCommand , REJECT_MALFORMED , string ( " error parsing message " ) ) ;
if ( strstr ( e . what ( ) , " end of data " ) )
if ( strstr ( e . what ( ) , " end of data " ) )
{
{
// Allow exceptions from under-length message on vRecv
// Allow exceptions from under-length message on vRecv
@ -5355,11 +5355,11 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
pto - > nPingUsecStart = GetTimeMicros ( ) ;
pto - > nPingUsecStart = GetTimeMicros ( ) ;
if ( pto - > nVersion > BIP0031_VERSION ) {
if ( pto - > nVersion > BIP0031_VERSION ) {
pto - > nPingNonceSent = nonce ;
pto - > nPingNonceSent = nonce ;
pto - > PushMessage ( " ping " , nonce ) ;
pto - > PushMessage ( NetMsgType : : PING , nonce ) ;
} else {
} else {
// Peer is too old to support ping command with nonce, pong will never arrive.
// Peer is too old to support ping command with nonce, pong will never arrive.
pto - > nPingNonceSent = 0 ;
pto - > nPingNonceSent = 0 ;
pto - > PushMessage ( " ping " ) ;
pto - > PushMessage ( NetMsgType : : PING ) ;
}
}
}
}
@ -5401,14 +5401,14 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
// receiver rejects addr messages larger than 1000
// receiver rejects addr messages larger than 1000
if ( vAddr . size ( ) > = 1000 )
if ( vAddr . size ( ) > = 1000 )
{
{
pto - > PushMessage ( " addr " , vAddr ) ;
pto - > PushMessage ( NetMsgType : : ADDR , vAddr ) ;
vAddr . clear ( ) ;
vAddr . clear ( ) ;
}
}
}
}
}
}
pto - > vAddrToSend . clear ( ) ;
pto - > vAddrToSend . clear ( ) ;
if ( ! vAddr . empty ( ) )
if ( ! vAddr . empty ( ) )
pto - > PushMessage ( " addr " , vAddr ) ;
pto - > PushMessage ( NetMsgType : : ADDR , vAddr ) ;
}
}
CNodeState & state = * State ( pto - > GetId ( ) ) ;
CNodeState & state = * State ( pto - > GetId ( ) ) ;
@ -5428,7 +5428,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
}
}
BOOST_FOREACH ( const CBlockReject & reject , state . rejects )
BOOST_FOREACH ( const CBlockReject & reject , state . rejects )
pto - > PushMessage ( " reject " , ( string ) " block " , reject . chRejectCode , reject . strRejectReason , reject . hashBlock ) ;
pto - > PushMessage ( NetMsgType : : REJECT , ( string ) NetMsgType : : BLOCK , reject . chRejectCode , reject . strRejectReason , reject . hashBlock ) ;
state . rejects . clear ( ) ;
state . rejects . clear ( ) ;
// Start block sync
// Start block sync
@ -5451,7 +5451,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
if ( pindexStart - > pprev )
if ( pindexStart - > pprev )
pindexStart = pindexStart - > pprev ;
pindexStart = pindexStart - > pprev ;
LogPrint ( " net " , " initial getheaders (%d) to peer=%d (startheight:%d) \n " , pindexStart - > nHeight , pto - > id , pto - > nStartingHeight ) ;
LogPrint ( " net " , " initial getheaders (%d) to peer=%d (startheight:%d) \n " , pindexStart - > nHeight , pto - > id , pto - > nStartingHeight ) ;
pto - > PushMessage ( " getheaders " , chainActive . GetLocator ( pindexStart ) , uint256 ( ) ) ;
pto - > PushMessage ( NetMsgType : : GETHEADERS , chainActive . GetLocator ( pindexStart ) , uint256 ( ) ) ;
}
}
}
}
@ -5551,7 +5551,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
LogPrint ( " net " , " %s: sending header %s to peer=%d \n " , __func__ ,
LogPrint ( " net " , " %s: sending header %s to peer=%d \n " , __func__ ,
vHeaders . front ( ) . GetHash ( ) . ToString ( ) , pto - > id ) ;
vHeaders . front ( ) . GetHash ( ) . ToString ( ) , pto - > id ) ;
}
}
pto - > PushMessage ( " headers " , vHeaders ) ;
pto - > PushMessage ( NetMsgType : : HEADERS , vHeaders ) ;
state . pindexBestHeaderSent = pBestIndex ;
state . pindexBestHeaderSent = pBestIndex ;
}
}
pto - > vBlockHashesToAnnounce . clear ( ) ;
pto - > vBlockHashesToAnnounce . clear ( ) ;
@ -5594,14 +5594,14 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
vInv . push_back ( inv ) ;
vInv . push_back ( inv ) ;
if ( vInv . size ( ) > = 1000 )
if ( vInv . size ( ) > = 1000 )
{
{
pto - > PushMessage ( " inv " , vInv ) ;
pto - > PushMessage ( NetMsgType : : INV , vInv ) ;
vInv . clear ( ) ;
vInv . clear ( ) ;
}
}
}
}
pto - > vInventoryToSend = vInvWait ;
pto - > vInventoryToSend = vInvWait ;
}
}
if ( ! vInv . empty ( ) )
if ( ! vInv . empty ( ) )
pto - > PushMessage ( " inv " , vInv ) ;
pto - > PushMessage ( NetMsgType : : INV , vInv ) ;
// Detect whether we're stalling
// Detect whether we're stalling
int64_t nNow = GetTimeMicros ( ) ;
int64_t nNow = GetTimeMicros ( ) ;
@ -5670,7 +5670,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
vGetData . push_back ( inv ) ;
vGetData . push_back ( inv ) ;
if ( vGetData . size ( ) > = 1000 )
if ( vGetData . size ( ) > = 1000 )
{
{
pto - > PushMessage ( " getdata " , vGetData ) ;
pto - > PushMessage ( NetMsgType : : GETDATA , vGetData ) ;
vGetData . clear ( ) ;
vGetData . clear ( ) ;
}
}
} else {
} else {
@ -5680,7 +5680,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
pto - > mapAskFor . erase ( pto - > mapAskFor . begin ( ) ) ;
pto - > mapAskFor . erase ( pto - > mapAskFor . begin ( ) ) ;
}
}
if ( ! vGetData . empty ( ) )
if ( ! vGetData . empty ( ) )
pto - > PushMessage ( " getdata " , vGetData ) ;
pto - > PushMessage ( NetMsgType : : GETDATA , vGetData ) ;
}
}
return true ;
return true ;