diff --git a/src/main.cpp b/src/main.cpp index a53f0a31..8266522d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5062,7 +5062,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle) // Detect stalled peers. int nSyncTimeout = GetArg("-synctimeout", 60); int64_t tNow = GetTimeMillis(); - if (pto->tGetblocks) { + if (pto->tGetblocks && IsSyncing()) { if (pto->tBlockRecving > pto->tBlockRecved) { if (tNow-pto->tBlockRecving > nSyncTimeout * 1000) { LogPrintf("sync peer=%d: Block download stalled for over %d seconds.\n", pto->id, nSyncTimeout); diff --git a/src/masternode.cpp b/src/masternode.cpp index 2acf445a..c6e879d5 100644 --- a/src/masternode.cpp +++ b/src/masternode.cpp @@ -128,7 +128,7 @@ void ProcessMessageMasternode(CNode* pfrom, std::string& strCommand, CDataStream //search existing masternode list, this is where we update existing masternodes with new dsee broadcasts - //LOCK(cs_masternodes); + LOCK(cs_masternodes); BOOST_FOREACH(CMasterNode& mn, vecMasternodes) { if(mn.vin.prevout == vin.prevout) { // count == -1 when it's a new entry @@ -248,7 +248,7 @@ void ProcessMessageMasternode(CNode* pfrom, std::string& strCommand, CDataStream } // see if we have this masternode - //LOCK(cs_masternodes); + LOCK(cs_masternodes); BOOST_FOREACH(CMasterNode& mn, vecMasternodes) { if(mn.vin.prevout == vin.prevout) { // LogPrintf("dseep - Found corresponding mn for vin: %s\n", vin.ToString().c_str()); diff --git a/src/net.cpp b/src/net.cpp index b7f4170b..6b8c459e 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -875,7 +875,7 @@ void ThreadSocketHandler() // vector vNodesCopy; { - //LOCK(cs_vNodes); + LOCK(cs_vNodes); vNodesCopy = vNodes; BOOST_FOREACH(CNode* pnode, vNodesCopy) pnode->AddRef(); @@ -978,7 +978,7 @@ void ThreadSocketHandler() BOOST_FOREACH(CNode* pnode, vNodesCopy) pnode->Release(); } - MilliSleep(2); // niceness + MilliSleep(1); // niceness } } @@ -1568,7 +1568,7 @@ void ThreadMessageHandler(int ncore) } // niceness - MilliSleep(10); + MilliSleep(2); } } diff --git a/src/net.h b/src/net.h index 155d7f1d..b6ceca7e 100644 --- a/src/net.h +++ b/src/net.h @@ -269,6 +269,7 @@ class CNode bool fDarkSendMaster; CSemaphoreGrant grantOutbound; int nRefCount; + CCriticalSection cs_nRefCount; NodeId id; protected: @@ -417,12 +418,14 @@ class CNode CNode* AddRef() { + LOCK(cs_nRefCount); nRefCount++; return this; } void Release() { + LOCK(cs_nRefCount); nRefCount--; }