if (!hdr.IsValid())
{
printf("\n\nPROCESSMESSAGE: ERRORS IN HEADER %s\n\n\n", hdr.GetCommand().c_str());
- continue;
+ return false;
}
string strCommand = hdr.GetCommand();
{
printf("ProcessMessages(%s, %u bytes) : CHECKSUM ERROR nChecksum=%08x hdr.nChecksum=%08x\n",
strCommand.c_str(), nMessageSize, nChecksum, hdr.nChecksum);
- continue;
+ return false;
}
// Copy message to its own buffer
PrintExceptionContinue(NULL, "ProcessMessages()");
}
- if (!fRet)
+ if (!fRet) {
printf("ProcessMessage(%s, %u bytes) FAILED\n", strCommand.c_str(), nMessageSize);
+ return false;
+ }
}
vRecv.Compact();
// Receive messages
{
TRY_LOCK(pnode->cs_vRecv, lockRecv);
- if (lockRecv)
- ProcessMessages(pnode);
+ if (lockRecv) {
+ if (!ProcessMessages(pnode)) {
+ pnode->CloseSocketDisconnect();
+ if (pnode == pnodeSync)
+ fHaveSyncNode = false;
+ }
+ }
}
if (fShutdown)
return;