@ -32,8 +32,6 @@
@@ -32,8 +32,6 @@
# include <boost/thread.hpp>
using namespace std ;
# if defined(NDEBUG)
# error "Bitcoin cannot be compiled without assertions."
# endif
@ -55,8 +53,8 @@ struct COrphanTx {
@@ -55,8 +53,8 @@ struct COrphanTx {
NodeId fromPeer ;
int64_t nTimeExpire ;
} ;
map < uint256 , COrphanTx > mapOrphanTransactions GUARDED_BY ( cs_main ) ;
map < COutPoint , set < map < uint256 , COrphanTx > : : iterator , IteratorComparator > > mapOrphanTransactionsByPrev GUARDED_BY ( cs_main ) ;
std : : map < uint256 , COrphanTx > mapOrphanTransactions GUARDED_BY ( cs_main ) ;
std : : map < COutPoint , std : : s et < std : : map < uint256 , COrphanTx > : : iterator , IteratorComparator > > mapOrphanTransactionsByPrev GUARDED_BY ( cs_main ) ;
void EraseOrphansFor ( NodeId peer ) EXCLUSIVE_LOCKS_REQUIRED ( cs_main ) ;
static size_t vExtraTxnForCompactIt = 0 ;
@ -76,7 +74,7 @@ namespace {
@@ -76,7 +74,7 @@ namespace {
* Set mapBlockSource [ hash ] . second to false if the node should not be
* punished if the block is invalid .
*/
map < uint256 , std : : pair < NodeId , bool > > mapBlockSource ;
std : : map < uint256 , std : : pair < NodeId , bool > > mapBlockSource ;
/**
* Filter for transactions that were recently rejected by
@ -108,10 +106,10 @@ namespace {
@@ -108,10 +106,10 @@ namespace {
bool fValidatedHeaders ; //!< Whether this block has validated headers at the time of request.
std : : unique_ptr < PartiallyDownloadedBlock > partialBlock ; //!< Optional, used for CMPCTBLOCK downloads
} ;
map < uint256 , pair < NodeId , list < QueuedBlock > : : iterator > > mapBlocksInFlight ;
std : : map < uint256 , std : : pair < NodeId , std : : list < QueuedBlock > : : iterator > > mapBlocksInFlight ;
/** Stack of nodes which we have set to announce using compact blocks */
list < NodeId > lNodesAnnouncingHeaderAndIDs ;
std : : list < NodeId > lNodesAnnouncingHeaderAndIDs ;
/** Number of preferable block download peers. */
int nPreferredDownload = 0 ;
@ -135,7 +133,7 @@ namespace {
@@ -135,7 +133,7 @@ namespace {
struct CBlockReject {
unsigned char chRejectCode ;
string strRejectReason ;
std : : st ring strRejectReason ;
uint256 hashBlock ;
} ;
@ -172,7 +170,7 @@ struct CNodeState {
@@ -172,7 +170,7 @@ struct CNodeState {
bool fSyncStarted ;
//! Since when we're stalling block download progress (in microseconds), or 0.
int64_t nStallingSince ;
list < QueuedBlock > vBlocksInFlight ;
std : : list < QueuedBlock > vBlocksInFlight ;
//! When the first entry in vBlocksInFlight started downloading. Don't care when vBlocksInFlight is empty.
int64_t nDownloadingSince ;
int nBlocksInFlight ;
@ -224,11 +222,11 @@ struct CNodeState {
@@ -224,11 +222,11 @@ struct CNodeState {
} ;
/** Map maintaining per-node state. Requires cs_main. */
map < NodeId , CNodeState > mapNodeState ;
std : : map < NodeId , CNodeState > mapNodeState ;
// Requires cs_main.
CNodeState * State ( NodeId pnode ) {
map < NodeId , CNodeState > : : iterator it = mapNodeState . find ( pnode ) ;
std : : map < NodeId , CNodeState > : : iterator it = mapNodeState . find ( pnode ) ;
if ( it = = mapNodeState . end ( ) )
return NULL ;
return & it - > second ;
@ -310,7 +308,7 @@ void FinalizeNode(NodeId nodeid, bool& fUpdateConnectionTime) {
@@ -310,7 +308,7 @@ void FinalizeNode(NodeId nodeid, bool& fUpdateConnectionTime) {
// Returns a bool indicating whether we requested this block.
// Also used if a block was /not/ received and timed out or started with another peer
bool MarkBlockAsReceived ( const uint256 & hash ) {
map < uint256 , pair < NodeId , list < QueuedBlock > : : iterator > > : : iterator itInFlight = mapBlocksInFlight . find ( hash ) ;
std : : map < uint256 , std : : pair < NodeId , std : : list < QueuedBlock > : : iterator > > : : iterator itInFlight = mapBlocksInFlight . find ( hash ) ;
if ( itInFlight ! = mapBlocksInFlight . end ( ) ) {
CNodeState * state = State ( itInFlight - > second . first ) ;
state - > nBlocksInFlightValidHeaders - = itInFlight - > second . second - > fValidatedHeaders ;
@ -334,12 +332,12 @@ bool MarkBlockAsReceived(const uint256& hash) {
@@ -334,12 +332,12 @@ bool MarkBlockAsReceived(const uint256& hash) {
// Requires cs_main.
// returns false, still setting pit, if the block was already in flight from the same peer
// pit will only be valid as long as the same cs_main lock is being held
bool MarkBlockAsInFlight ( NodeId nodeid , const uint256 & hash , const Consensus : : Params & consensusParams , const CBlockIndex * pindex = NULL , list < QueuedBlock > : : iterator * * pit = NULL ) {
bool MarkBlockAsInFlight ( NodeId nodeid , const uint256 & hash , const Consensus : : Params & consensusParams , const CBlockIndex * pindex = NULL , std : : list < QueuedBlock > : : iterator * * pit = NULL ) {
CNodeState * state = State ( nodeid ) ;
assert ( state ! = NULL ) ;
// Short-circuit most stuff in case its from the same node
map < uint256 , pair < NodeId , list < QueuedBlock > : : iterator > > : : iterator itInFlight = mapBlocksInFlight . find ( hash ) ;
std : : map < uint256 , std : : pair < NodeId , std : : list < QueuedBlock > : : iterator > > : : iterator itInFlight = mapBlocksInFlight . find ( hash ) ;
if ( itInFlight ! = mapBlocksInFlight . end ( ) & & itInFlight - > second . first = = nodeid ) {
* pit = & itInFlight - > second . second ;
return false ;
@ -348,7 +346,7 @@ bool MarkBlockAsInFlight(NodeId nodeid, const uint256& hash, const Consensus::Pa
@@ -348,7 +346,7 @@ bool MarkBlockAsInFlight(NodeId nodeid, const uint256& hash, const Consensus::Pa
// Make sure it's not listed somewhere already.
MarkBlockAsReceived ( hash ) ;
list < QueuedBlock > : : iterator it = state - > vBlocksInFlight . insert ( state - > vBlocksInFlight . end ( ) ,
std : : list < QueuedBlock > : : iterator it = state - > vBlocksInFlight . insert ( state - > vBlocksInFlight . end ( ) ,
{ hash , pindex , pindex ! = NULL , std : : unique_ptr < PartiallyDownloadedBlock > ( pit ? new PartiallyDownloadedBlock ( & mempool ) : NULL ) } ) ;
state - > nBlocksInFlight + + ;
state - > nBlocksInFlightValidHeaders + = it - > fValidatedHeaders ;
@ -640,7 +638,7 @@ bool AddOrphanTx(const CTransactionRef& tx, NodeId peer) EXCLUSIVE_LOCKS_REQUIRE
@@ -640,7 +638,7 @@ bool AddOrphanTx(const CTransactionRef& tx, NodeId peer) EXCLUSIVE_LOCKS_REQUIRE
int static EraseOrphanTx ( uint256 hash ) EXCLUSIVE_LOCKS_REQUIRED ( cs_main )
{
map < uint256 , COrphanTx > : : iterator it = mapOrphanTransactions . find ( hash ) ;
std : : map < uint256 , COrphanTx > : : iterator it = mapOrphanTransactions . find ( hash ) ;
if ( it = = mapOrphanTransactions . end ( ) )
return 0 ;
BOOST_FOREACH ( const CTxIn & txin , it - > second . tx - > vin )
@ -659,10 +657,10 @@ int static EraseOrphanTx(uint256 hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
@@ -659,10 +657,10 @@ int static EraseOrphanTx(uint256 hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
void EraseOrphansFor ( NodeId peer )
{
int nErased = 0 ;
map < uint256 , COrphanTx > : : iterator iter = mapOrphanTransactions . begin ( ) ;
std : : map < uint256 , COrphanTx > : : iterator iter = mapOrphanTransactions . begin ( ) ;
while ( iter ! = mapOrphanTransactions . end ( ) )
{
map < uint256 , COrphanTx > : : iterator maybeErase = iter + + ; // increment to avoid iterator becoming invalid
std : : map < uint256 , COrphanTx > : : iterator maybeErase = iter + + ; // increment to avoid iterator becoming invalid
if ( maybeErase - > second . fromPeer = = peer )
{
nErased + = EraseOrphanTx ( maybeErase - > second . tx - > GetHash ( ) ) ;
@ -681,10 +679,10 @@ unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans) EXCLUSIVE_LOCKS_REQUIRE
@@ -681,10 +679,10 @@ unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans) EXCLUSIVE_LOCKS_REQUIRE
// Sweep out expired orphan pool entries:
int nErased = 0 ;
int64_t nMinExpTime = nNow + ORPHAN_TX_EXPIRE_TIME - ORPHAN_TX_EXPIRE_INTERVAL ;
map < uint256 , COrphanTx > : : iterator iter = mapOrphanTransactions . begin ( ) ;
std : : map < uint256 , COrphanTx > : : iterator iter = mapOrphanTransactions . begin ( ) ;
while ( iter ! = mapOrphanTransactions . end ( ) )
{
map < uint256 , COrphanTx > : : iterator maybeErase = iter + + ;
std : : map < uint256 , COrphanTx > : : iterator maybeErase = iter + + ;
if ( maybeErase - > second . nTimeExpire < = nNow ) {
nErased + = EraseOrphanTx ( maybeErase - > second . tx - > GetHash ( ) ) ;
} else {
@ -699,7 +697,7 @@ unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans) EXCLUSIVE_LOCKS_REQUIRE
@@ -699,7 +697,7 @@ unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans) EXCLUSIVE_LOCKS_REQUIRE
{
// Evict a random orphan:
uint256 randomhash = GetRandHash ( ) ;
map < uint256 , COrphanTx > : : iterator it = mapOrphanTransactions . lower_bound ( randomhash ) ;
std : : map < uint256 , COrphanTx > : : iterator it = mapOrphanTransactions . lower_bound ( randomhash ) ;
if ( it = = mapOrphanTransactions . end ( ) )
it = mapOrphanTransactions . begin ( ) ;
EraseOrphanTx ( it - > first ) ;
@ -961,7 +959,7 @@ static void RelayAddress(const CAddress& addr, bool fReachable, CConnman& connma
@@ -961,7 +959,7 @@ static void RelayAddress(const CAddress& addr, bool fReachable, CConnman& connma
void static ProcessGetData ( CNode * pfrom , const Consensus : : Params & consensusParams , CConnman & connman , std : : atomic < bool > & interruptMsgProc )
{
std : : deque < CInv > : : iterator it = pfrom - > vRecvGetData . begin ( ) ;
vector < CInv > vNotFound ;
std : : vector < CInv > vNotFound ;
CNetMsgMaker msgMaker ( pfrom - > GetSendVersion ( ) ) ;
LOCK ( cs_main ) ;
@ -1083,7 +1081,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
@@ -1083,7 +1081,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
// Bypass PushInventory, this must send even if redundant,
// and we want it right after the last block so they don't
// wait for other stuff first.
vector < CInv > vInv ;
std : : vector < CInv > vInv ;
vInv . push_back ( CInv ( MSG_BLOCK , chainActive . Tip ( ) - > GetBlockHash ( ) ) ) ;
connman . PushMessage ( pfrom , msgMaker . Make ( NetMsgType : : INV , vInv ) ) ;
pfrom - > hashContinue . SetNull ( ) ;
@ -1160,7 +1158,7 @@ inline void static SendBlockTransactions(const CBlock& block, const BlockTransac
@@ -1160,7 +1158,7 @@ inline void static SendBlockTransactions(const CBlock& block, const BlockTransac
connman . PushMessage ( pfrom , msgMaker . Make ( nSendFlags , NetMsgType : : BLOCKTXN , resp ) ) ;
}
bool static ProcessMessage ( CNode * pfrom , string strCommand , CDataStream & vRecv , int64_t nTimeReceived , const CChainParams & chainparams , CConnman & connman , std : : atomic < bool > & interruptMsgProc )
bool static ProcessMessage ( CNode * pfrom , std : : st ring strCommand , CDataStream & vRecv , int64_t nTimeReceived , const CChainParams & chainparams , CConnman & connman , std : : atomic < bool > & interruptMsgProc )
{
LogPrint ( " net " , " received: %s (%u bytes) peer=%d \n " , SanitizeString ( strCommand ) , vRecv . size ( ) , pfrom - > id ) ;
if ( IsArgSet ( " -dropmessagestest " ) & & GetRand ( GetArg ( " -dropmessagestest " , 0 ) ) = = 0 )
@ -1190,7 +1188,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1190,7 +1188,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// Each connection can only send one version message
if ( pfrom - > nVersion ! = 0 )
{
connman . PushMessage ( pfrom , CNetMsgMaker ( INIT_PROTO_VERSION ) . Make ( NetMsgType : : REJECT , strCommand , REJECT_DUPLICATE , string ( " Duplicate version message " ) ) ) ;
connman . PushMessage ( pfrom , CNetMsgMaker ( INIT_PROTO_VERSION ) . Make ( NetMsgType : : REJECT , strCommand , REJECT_DUPLICATE , std : : st ring ( " Duplicate version message " ) ) ) ;
LOCK ( cs_main ) ;
Misbehaving ( pfrom - > GetId ( ) , 1 ) ;
return false ;
@ -1311,7 +1309,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1311,7 +1309,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
pfrom - > fSuccessfullyConnected = true ;
string remoteAddr ;
std : : st ring remoteAddr ;
if ( fLogIPs )
remoteAddr = " , peeraddr= " + pfrom - > addr . ToString ( ) ;
@ -1352,7 +1350,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1352,7 +1350,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
if ( strCommand = = NetMsgType : : VERACK )
{
pfrom - > SetRecvVersion ( min ( pfrom - > nVersion , PROTOCOL_VERSION ) ) ;
pfrom - > SetRecvVersion ( std : : min ( pfrom - > nVersion , PROTOCOL_VERSION ) ) ;
if ( ! pfrom - > fInbound ) {
// Mark this node as currently connected, so we update its timestamp later.
@ -1385,7 +1383,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1385,7 +1383,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
else if ( strCommand = = NetMsgType : : ADDR )
{
vector < CAddress > vAddr ;
std : : vector < CAddress > vAddr ;
vRecv > > vAddr ;
// Don't want addr from older versions unless seeding
@ -1399,7 +1397,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1399,7 +1397,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
// Store the new addresses
vector < CAddress > vAddrOk ;
std : : vector < CAddress > vAddrOk ;
int64_t nNow = GetAdjustedTime ( ) ;
int64_t nSince = nNow - 10 * 60 ;
BOOST_FOREACH ( CAddress & addr , vAddr )
@ -1462,7 +1460,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1462,7 +1460,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
else if ( strCommand = = NetMsgType : : INV )
{
vector < CInv > vInv ;
std : : vector < CInv > vInv ;
vRecv > > vInv ;
if ( vInv . size ( ) > MAX_INV_SZ )
{
@ -1529,7 +1527,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1529,7 +1527,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
else if ( strCommand = = NetMsgType : : GETDATA )
{
vector < CInv > vInv ;
std : : vector < CInv > vInv ;
vRecv > > vInv ;
if ( vInv . size ( ) > MAX_INV_SZ )
{
@ -1691,7 +1689,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1691,7 +1689,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
// we must use CBlocks, as CBlockHeaders won't include the 0x00 nTx count at the end
vector < CBlock > vHeaders ;
std : : vector < CBlock > vHeaders ;
int nLimit = MAX_HEADERS_RESULTS ;
LogPrint ( " net " , " getheaders %d to %s from peer=%d \n " , ( pindex ? pindex - > nHeight : - 1 ) , hashStop . IsNull ( ) ? " end " : hashStop . ToString ( ) , pfrom - > id ) ;
for ( ; pindex ; pindex = chainActive . Next ( pindex ) )
@ -1727,8 +1725,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1727,8 +1725,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
return true ;
}
deque < COutPoint > vWorkQueue ;
vector < uint256 > vEraseQueue ;
std : : deque < COutPoint > vWorkQueue ;
std : : vector < uint256 > vEraseQueue ;
CTransactionRef ptx ;
vRecv > > ptx ;
const CTransaction & tx = * ptx ;
@ -1761,7 +1759,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1761,7 +1759,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
mempool . size ( ) , mempool . DynamicMemoryUsage ( ) / 1000 ) ;
// Recursively process any orphan transactions that depended on this one
set < NodeId > setMisbehaving ;
std : : s et < NodeId > setMisbehaving ;
while ( ! vWorkQueue . empty ( ) ) {
auto itByPrev = mapOrphanTransactionsByPrev . find ( vWorkQueue . front ( ) ) ;
vWorkQueue . pop_front ( ) ;
@ -1955,7 +1953,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1955,7 +1953,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
assert ( pindex ) ;
UpdateBlockAvailability ( pfrom - > GetId ( ) , pindex - > GetBlockHash ( ) ) ;
std : : map < uint256 , pair < NodeId , list < QueuedBlock > : : iterator > > : : iterator blockInFlightIt = mapBlocksInFlight . find ( pindex - > GetBlockHash ( ) ) ;
std : : map < uint256 , std : : pair < NodeId , std : : list < QueuedBlock > : : iterator > > : : iterator blockInFlightIt = mapBlocksInFlight . find ( pindex - > GetBlockHash ( ) ) ;
bool fAlreadyInFlight = blockInFlightIt ! = mapBlocksInFlight . end ( ) ;
if ( pindex - > nStatus & BLOCK_HAVE_DATA ) // Nothing to do here
@ -1990,7 +1988,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -1990,7 +1988,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
if ( pindex - > nHeight < = chainActive . Height ( ) + 2 ) {
if ( ( ! fAlreadyInFlight & & nodestate - > nBlocksInFlight < MAX_BLOCKS_IN_TRANSIT_PER_PEER ) | |
( fAlreadyInFlight & & blockInFlightIt - > second . first = = pfrom - > GetId ( ) ) ) {
list < QueuedBlock > : : iterator * queuedBlockIt = NULL ;
std : : list < QueuedBlock > : : iterator * queuedBlockIt = NULL ;
if ( ! MarkBlockAsInFlight ( pfrom - > GetId ( ) , pindex - > GetBlockHash ( ) , chainparams . GetConsensus ( ) , pindex , & queuedBlockIt ) ) {
if ( ! ( * queuedBlockIt ) - > partialBlock )
( * queuedBlockIt ) - > partialBlock . reset ( new PartiallyDownloadedBlock ( & mempool ) ) ;
@ -2108,7 +2106,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -2108,7 +2106,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
{
LOCK ( cs_main ) ;
map < uint256 , pair < NodeId , list < QueuedBlock > : : iterator > > : : iterator it = mapBlocksInFlight . find ( resp . blockhash ) ;
std : : map < uint256 , std : : pair < NodeId , std : : list < QueuedBlock > : : iterator > > : : iterator it = mapBlocksInFlight . find ( resp . blockhash ) ;
if ( it = = mapBlocksInFlight . end ( ) | | ! it - > second . second - > partialBlock | |
it - > second . first ! = pfrom - > GetId ( ) ) {
LogPrint ( " net " , " Peer %d sent us block transactions for block we weren't expecting \n " , pfrom - > id ) ;
@ -2265,7 +2263,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -2265,7 +2263,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// If this set of headers is valid and ends in a block with at least as
// much work as our tip, download as much as possible.
if ( fCanDirectFetch & & pindexLast - > IsValid ( BLOCK_VALID_TREE ) & & chainActive . Tip ( ) - > nChainWork < = pindexLast - > nChainWork ) {
vector < const CBlockIndex * > vToFetch ;
std : : vector < const CBlockIndex * > vToFetch ;
const CBlockIndex * pindexWalk = pindexLast ;
// Calculate all the blocks we'd need to switch to pindexLast, up to a limit.
while ( pindexWalk & & ! chainActive . Contains ( pindexWalk ) & & vToFetch . size ( ) < = MAX_BLOCKS_IN_TRANSIT_PER_PEER ) {
@ -2286,7 +2284,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -2286,7 +2284,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
pindexLast - > GetBlockHash ( ) . ToString ( ) ,
pindexLast - > nHeight ) ;
} else {
vector < CInv > vGetData ;
std : : vector < CInv > vGetData ;
// Download as much as possible, from earliest to latest.
BOOST_REVERSE_FOREACH ( const CBlockIndex * pindex , vToFetch ) {
if ( nodestate - > nBlocksInFlight > = MAX_BLOCKS_IN_TRANSIT_PER_PEER ) {
@ -2365,7 +2363,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -2365,7 +2363,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
pfrom - > fSentAddr = true ;
pfrom - > vAddrToSend . clear ( ) ;
vector < CAddress > vAddr = connman . GetAddresses ( ) ;
std : : vector < CAddress > vAddr = connman . GetAddresses ( ) ;
FastRandomContext insecure_rand ;
BOOST_FOREACH ( const CAddress & addr , vAddr )
pfrom - > PushAddress ( addr , insecure_rand ) ;
@ -2496,7 +2494,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -2496,7 +2494,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
else if ( strCommand = = NetMsgType : : FILTERADD )
{
vector < unsigned char > vData ;
std : : vector < unsigned char > vData ;
vRecv > > vData ;
// Nodes must NEVER send a data item > 520 bytes (the max size for a script data object,
@ -2534,10 +2532,10 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -2534,10 +2532,10 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
{
if ( fDebug ) {
try {
string strMsg ; unsigned char ccode ; string strReason ;
std : : st ring strMsg ; unsigned char ccode ; std : : string strReason ;
vRecv > > LIMITED_STRING ( strMsg , CMessageHeader : : COMMAND_SIZE ) > > ccode > > LIMITED_STRING ( strReason , MAX_REJECT_MESSAGE_LENGTH ) ;
ostringstream ss ;
std : : ostringstream ss ;
ss < < strMsg < < " code " < < itostr ( ccode ) < < " : " < < strReason ;
if ( strMsg = = NetMsgType : : BLOCK | | strMsg = = NetMsgType : : TX )
@ -2635,7 +2633,7 @@ bool ProcessMessages(CNode* pfrom, CConnman& connman, std::atomic<bool>& interru
@@ -2635,7 +2633,7 @@ bool ProcessMessages(CNode* pfrom, CConnman& connman, std::atomic<bool>& interru
LogPrintf ( " PROCESSMESSAGE: ERRORS IN HEADER %s peer=%d \n " , SanitizeString ( hdr . GetCommand ( ) ) , pfrom - > id ) ;
return fMoreWork ;
}
string strCommand = hdr . GetCommand ( ) ;
std : : st ring strCommand = hdr . GetCommand ( ) ;
// Message size
unsigned int nMessageSize = hdr . nMessageSize ;
@ -2664,7 +2662,7 @@ bool ProcessMessages(CNode* pfrom, CConnman& connman, std::atomic<bool>& interru
@@ -2664,7 +2662,7 @@ bool ProcessMessages(CNode* pfrom, CConnman& connman, std::atomic<bool>& interru
}
catch ( const std : : ios_base : : failure & e )
{
connman . PushMessage ( pfrom , CNetMsgMaker ( INIT_PROTO_VERSION ) . Make ( NetMsgType : : REJECT , strCommand , REJECT_MALFORMED , string ( " error parsing message " ) ) ) ;
connman . PushMessage ( pfrom , CNetMsgMaker ( INIT_PROTO_VERSION ) . Make ( NetMsgType : : REJECT , strCommand , REJECT_MALFORMED , std : : st ring ( " error parsing message " ) ) ) ;
if ( strstr ( e . what ( ) , " end of data " ) )
{
// Allow exceptions from under-length message on vRecv
@ -2761,7 +2759,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
@@ -2761,7 +2759,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
CNodeState & state = * State ( pto - > GetId ( ) ) ;
BOOST_FOREACH ( const CBlockReject & reject , state . rejects )
connman . PushMessage ( pto , msgMaker . Make ( NetMsgType : : REJECT , ( string ) NetMsgType : : BLOCK , reject . chRejectCode , reject . strRejectReason , reject . hashBlock ) ) ;
connman . PushMessage ( pto , msgMaker . Make ( NetMsgType : : REJECT , ( std : : st ring ) NetMsgType : : BLOCK , reject . chRejectCode , reject . strRejectReason , reject . hashBlock ) ) ;
state . rejects . clear ( ) ;
if ( state . fShouldBan ) {
@ -2794,7 +2792,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
@@ -2794,7 +2792,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
//
if ( pto - > nNextAddrSend < nNow ) {
pto - > nNextAddrSend = PoissonNextSend ( nNow , AVG_ADDRESS_BROADCAST_INTERVAL ) ;
vector < CAddress > vAddr ;
std : : vector < CAddress > vAddr ;
vAddr . reserve ( pto - > vAddrToSend . size ( ) ) ;
BOOST_FOREACH ( const CAddress & addr , pto - > vAddrToSend )
{
@ -2862,7 +2860,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
@@ -2862,7 +2860,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
// blocks, or if the peer doesn't want headers, just
// add all to the inv queue.
LOCK ( pto - > cs_inventory ) ;
vector < CBlock > vHeaders ;
std : : vector < CBlock > vHeaders ;
bool fRevertToInv = ( ( ! state . fPreferHeaders & &
( ! state . fPreferHeaderAndIDs | | pto - > vBlockHashesToAnnounce . size ( ) > 1 ) ) | |
pto - > vBlockHashesToAnnounce . size ( ) > MAX_BLOCKS_TO_ANNOUNCE ) ;
@ -2994,7 +2992,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
@@ -2994,7 +2992,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
//
// Message: inventory
//
vector < CInv > vInv ;
std : : vector < CInv > vInv ;
{
LOCK ( pto - > cs_inventory ) ;
vInv . reserve ( std : : max < size_t > ( pto - > vInventoryBlockToSend . size ( ) , INVENTORY_BROADCAST_MAX ) ) ;
@ -3059,7 +3057,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
@@ -3059,7 +3057,7 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
// Determine transactions to relay
if ( fSendTrickle ) {
// Produce a vector with all candidates for sending
vector < std : : set < uint256 > : : iterator > vInvTx ;
std : : vector < std : : set < uint256 > : : iterator > vInvTx ;
vInvTx . reserve ( pto - > setInventoryTxToSend . size ( ) ) ;
for ( std : : set < uint256 > : : iterator it = pto - > setInventoryTxToSend . begin ( ) ; it ! = pto - > setInventoryTxToSend . end ( ) ; it + + ) {
vInvTx . push_back ( it ) ;
@ -3153,9 +3151,9 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
@@ -3153,9 +3151,9 @@ bool SendMessages(CNode* pto, CConnman& connman, std::atomic<bool>& interruptMsg
//
// Message: getdata (blocks)
//
vector < CInv > vGetData ;
std : : vector < CInv > vGetData ;
if ( ! pto - > fClient & & ( fFetch | | ! IsInitialBlockDownload ( ) ) & & state . nBlocksInFlight < MAX_BLOCKS_IN_TRANSIT_PER_PEER ) {
vector < const CBlockIndex * > vToDownload ;
std : : vector < const CBlockIndex * > vToDownload ;
NodeId staller = - 1 ;
FindNextBlocksToDownload ( pto - > GetId ( ) , MAX_BLOCKS_IN_TRANSIT_PER_PEER - state . nBlocksInFlight , vToDownload , staller , consensusParams ) ;
BOOST_FOREACH ( const CBlockIndex * pindex , vToDownload ) {