From d15c009b3c4ab434ebb98587b6c69bbb6cea6b82 Mon Sep 17 00:00:00 2001 From: stasatdaglabs <39559713+stasatdaglabs@users.noreply.github.com> Date: Thu, 4 Jun 2020 15:11:05 +0300 Subject: [PATCH] [NOD-1030] Disconnect from syncPeers that send orphan blocks (#744) * [NOD-1030] Disconnect from syncPeers that send orphan blocks. * [NOD-1030] Remove debug log. * [NOD-1030] Remove unnecessary call to stopSyncFromPeer. --- netsync/manager.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/netsync/manager.go b/netsync/manager.go index fc43d7fbe..31923cc62 100644 --- a/netsync/manager.go +++ b/netsync/manager.go @@ -529,8 +529,17 @@ func (sm *SyncManager) handleBlockMsg(bmsg *blockMsg) { return } - // Request the parents for the orphan block from the peer that sent it. if isOrphan { + // If we received an orphan block from the sync peer, it is + // misbehaving and must be disconnected from. + if peer == sm.syncPeer { + log.Errorf("Received an orphan block %s from sync peer %s. Disconnecting...", + blockHash, peer) + peer.Disconnect() + return + } + + // Request the parents for the orphan block from the peer that sent it. missingAncestors, err := sm.dag.GetOrphanMissingAncestorHashes(blockHash) if err != nil { log.Errorf("Failed to find missing ancestors for block %s: %s",