diff --git a/core/network/src/protocol/sync.rs b/core/network/src/protocol/sync.rs index 17ba6ca94d289fec4d3af4ba4ca6a9f27f2f6f86..d1d3b178c51c424a666ba2378bfc1f8a9da9418a 100644 --- a/core/network/src/protocol/sync.rs +++ b/core/network/src/protocol/sync.rs @@ -465,7 +465,11 @@ impl<B: BlockT> ChainSync<B> { hash, peers, ); - peers = self.peers.iter().map(|(id, _)| id.clone()).collect(); + peers = self.peers.iter() + // Only request blocks from peers who are ahead or on a par. + .filter(|(id, peer)| peer.best_number >= number) + .map(|(id, _)| id.clone()) + .collect(); } else { debug!(target: "sync", "Explicit sync request for block {:?} with {:?}", hash, peers); }