process received messages one at a time without sleeping between messages

This commit is contained in:
Patrick Strateman
2013-10-28 13:20:21 -07:00
committed by Wladimir J. van der Laan
parent ef14a26b12
commit 7084756f4f
2 changed files with 23 additions and 1 deletions

View File

@@ -1629,6 +1629,9 @@ void ThreadMessageHandler()
CNode* pnodeTrickle = NULL;
if (!vNodesCopy.empty())
pnodeTrickle = vNodesCopy[GetRand(vNodesCopy.size())];
bool fSleep = true;
BOOST_FOREACH(CNode* pnode, vNodesCopy)
{
if (pnode->fDisconnect)
@@ -1638,8 +1641,18 @@ void ThreadMessageHandler()
{
TRY_LOCK(pnode->cs_vRecvMsg, lockRecv);
if (lockRecv)
{
if (!ProcessMessages(pnode))
pnode->CloseSocketDisconnect();
if (pnode->nSendSize < SendBufferSize())
{
if (!pnode->vRecvGetData.empty() || (!pnode->vRecvMsg.empty() && pnode->vRecvMsg[0].complete()))
{
fSleep = false;
}
}
}
}
boost::this_thread::interruption_point();
@@ -1658,7 +1671,8 @@ void ThreadMessageHandler()
pnode->Release();
}
MilliSleep(100);
if (fSleep)
MilliSleep(100);
}
}