Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
Further fix for common block update (#4071)
Browse files Browse the repository at this point in the history
  • Loading branch information
arkpar authored and gavofyork committed Nov 9, 2019
1 parent 935d9d1 commit 7882745
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
10 changes: 6 additions & 4 deletions core/network/src/protocol/sync.rs
Expand Up @@ -1047,10 +1047,12 @@ impl<B: BlockT> ChainSync<B> {
}
// If the announced block is the best they have seen, our common number
// is either one further ahead or it's the one they just announced, if we know about it.
if known && is_best {
peer.common_number = number
} else if header.parent_hash() == &self.best_queued_hash || known_parent {
peer.common_number = number - One::one();
if is_best {
if known {
peer.common_number = number
} else if header.parent_hash() == &self.best_queued_hash || known_parent {
peer.common_number = number - One::one();
}
}
self.is_idle = false;

Expand Down
11 changes: 10 additions & 1 deletion core/network/src/test/sync.rs
Expand Up @@ -640,7 +640,8 @@ fn does_not_sync_announced_old_best_block() {
let mut net = TestNet::new(3);

let old_hash = net.peer(0).push_blocks(1, false);
net.peer(0).push_blocks(19, true);
let old_hash_with_parent = net.peer(0).push_blocks(1, false);
net.peer(0).push_blocks(18, true);
net.peer(1).push_blocks(20, true);

net.peer(0).announce_block(old_hash, Vec::new());
Expand All @@ -650,4 +651,12 @@ fn does_not_sync_announced_old_best_block() {
Ok(Async::Ready(()))
})).unwrap();
assert!(!net.peer(1).is_major_syncing());

net.peer(0).announce_block(old_hash_with_parent, Vec::new());
runtime.block_on(futures::future::poll_fn::<(), (), _>(|| -> Result<_, ()> {
// poll once to import announcement
net.poll();
Ok(Async::Ready(()))
})).unwrap();
assert!(!net.peer(1).is_major_syncing());
}

0 comments on commit 7882745

Please sign in to comment.