adding helper can_sync

This commit is contained in:
Nikolay Volf 2016-03-17 13:14:06 +01:00
parent 5c4edbdd6b
commit 83f5cc6aa6

View File

@ -405,7 +405,7 @@ impl ChainSync {
self.remove_downloaded_blocks(number + 1); self.remove_downloaded_blocks(number + 1);
} }
if self.have_common_block && number < self.current_base_block() + 1 { if self.have_common_block && number < self.current_base_block() + 1 {
// unkown header // unkown header
debug!(target: "sync", "Old block header {:?} ({}) is unknown, restarting sync", hash, number); debug!(target: "sync", "Old block header {:?} ({}) is unknown, restarting sync", hash, number);
self.restart(io); self.restart(io);
return Ok(()); return Ok(());
@ -627,6 +627,13 @@ impl ChainSync {
self.state = SyncState::Waiting; self.state = SyncState::Waiting;
} }
fn can_sync(&self) -> bool {
match self.state {
SyncState::Idle | SyncState::NotSynced | SyncState::FullySynced => true,
_ => false
}
}
/// Find something to do for a peer. Called for a new peer or when a peer is done with it's task. /// Find something to do for a peer. Called for a new peer or when a peer is done with it's task.
fn sync_peer(&mut self, io: &mut SyncIo, peer_id: PeerId, force: bool) { fn sync_peer(&mut self, io: &mut SyncIo, peer_id: PeerId, force: bool) {
let (peer_latest, peer_difficulty) = { let (peer_latest, peer_difficulty) = {
@ -646,7 +653,7 @@ impl ChainSync {
if force || peer_difficulty > syncing_difficulty { if force || peer_difficulty > syncing_difficulty {
// start sync // start sync
self.syncing_difficulty = peer_difficulty; self.syncing_difficulty = peer_difficulty;
if self.state == SyncState::Idle || self.state == SyncState::NotSynced { if self.can_sync() {
self.state = SyncState::Blocks; self.state = SyncState::Blocks;
} }
trace!(target: "sync", "Starting sync with better chain"); trace!(target: "sync", "Starting sync with better chain");