From: CryptoManiac Date: Tue, 28 Dec 2021 08:29:23 +0000 (+0300) Subject: Force disconnect on checksum or format errors X-Git-Tag: nvc-v0.5.9~16 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=e9a025643ea90b52f6f0989746adf98770c9f578 Force disconnect on checksum or format errors --- diff --git a/src/main.cpp b/src/main.cpp index 7b55326..c9bd58d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3851,7 +3851,7 @@ bool ProcessMessages(CNode* pfrom) if (!hdr.IsValid()) { printf("\n\nPROCESSMESSAGE: ERRORS IN HEADER %s\n\n\n", hdr.GetCommand().c_str()); - continue; + return false; } string strCommand = hdr.GetCommand(); @@ -3877,7 +3877,7 @@ bool ProcessMessages(CNode* pfrom) { 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 @@ -3918,8 +3918,10 @@ bool ProcessMessages(CNode* pfrom) PrintExceptionContinue(NULL, "ProcessMessages()"); } - if (!fRet) + if (!fRet) { printf("ProcessMessage(%s, %u bytes) FAILED\n", strCommand.c_str(), nMessageSize); + return false; + } } vRecv.Compact(); diff --git a/src/net.cpp b/src/net.cpp index 9ae84ac..64695a0 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1531,8 +1531,13 @@ void ThreadMessageHandler2(void* parg) // 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;