|
|
@@ -484,6 +484,7 @@ async fn handle_reorg(
|
|
|
Ok(i) => i,
|
|
|
Err(e) => {
|
|
|
error!(target: "darkfid::task::handle_reorg", "Retrieving state inverse diffs failed: {e}");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return false
|
|
|
}
|
|
|
};
|
|
|
@@ -492,6 +493,7 @@ async fn handle_reorg(
|
|
|
peer_fork.overlay.lock().unwrap().overlay.lock().unwrap().add_diff(inverse_diff)
|
|
|
{
|
|
|
error!(target: "darkfid::task::handle_reorg", "Applying inverse diff failed: {e}");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return false
|
|
|
}
|
|
|
}
|
|
|
@@ -499,6 +501,7 @@ async fn handle_reorg(
|
|
|
// Rebuild fork contracts states monotree
|
|
|
if let Err(e) = peer_fork.compute_monotree() {
|
|
|
error!(target: "darkfid::task::handle_reorg", "Rebuilding peer fork monotree failed: {e}");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
@@ -519,6 +522,7 @@ async fn handle_reorg(
|
|
|
let request = ForkProposalsRequest { headers: batch.clone(), fork_header: proposal.hash };
|
|
|
if let Err(e) = channel.send(&request).await {
|
|
|
debug!(target: "darkfid::task::handle_reorg", "Channel send failed: {e}");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return true
|
|
|
};
|
|
|
|
|
|
@@ -530,6 +534,7 @@ async fn handle_reorg(
|
|
|
Ok(r) => r,
|
|
|
Err(e) => {
|
|
|
debug!(target: "darkfid::task::handle_reorg", "Asking peer for proposals sequence failed: {e}");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return true
|
|
|
}
|
|
|
};
|
|
|
@@ -538,6 +543,7 @@ async fn handle_reorg(
|
|
|
// Response sequence must be the same length as the one requested
|
|
|
if response.proposals.len() != batch.len() {
|
|
|
debug!(target: "darkfid::task::handle_reorg", "Peer responded with a different proposals sequence length");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
@@ -548,6 +554,7 @@ async fn handle_reorg(
|
|
|
// Validate its the proposal we requested
|
|
|
if peer_proposal.hash != batch[peer_proposal_index] {
|
|
|
error!(target: "darkfid::task::handle_reorg", "Peer responded with a differend proposal: {} - {}", batch[peer_proposal_index], peer_proposal.hash);
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
@@ -562,6 +569,7 @@ async fn handle_reorg(
|
|
|
// Append proposal
|
|
|
if let Err(e) = peer_fork.append_proposal(peer_proposal).await {
|
|
|
error!(target: "darkfid::task::handle_reorg", "Appending proposal failed: {e}");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return true
|
|
|
}
|
|
|
}
|
|
|
@@ -582,6 +590,7 @@ async fn handle_reorg(
|
|
|
// Append trigger proposal
|
|
|
if let Err(e) = peer_fork.append_proposal(proposal).await {
|
|
|
error!(target: "darkfid::task::handle_reorg", "Appending proposal failed: {e}");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
@@ -591,6 +600,7 @@ async fn handle_reorg(
|
|
|
Ok(i) => i,
|
|
|
Err(e) => {
|
|
|
debug!(target: "darkfid::task::handle_reorg", "Retrieving best fork index failed: {e}");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
return false
|
|
|
}
|
|
|
};
|
|
|
@@ -600,6 +610,7 @@ async fn handle_reorg(
|
|
|
peer_fork.hashes_rank <= best_fork.hashes_rank)
|
|
|
{
|
|
|
info!(target: "darkfid::task::handle_reorg", "Peer fork ranks lower than our current best fork, skipping...");
|
|
|
+ peer_fork.purge_new_trees();
|
|
|
drop(forks);
|
|
|
return true
|
|
|
}
|