From 241302d0e44cdc1596118e84bd3fa328bb24e64c Mon Sep 17 00:00:00 2001
From: Ashley <ashley.ruglys@gmail.com>
Date: Thu, 25 Feb 2021 13:39:30 +0100
Subject: [PATCH] Add an is_finished boolean to the grandpa warp sync response
 (#8203)

---
 substrate/client/finality-grandpa-warp-sync/src/proof.rs | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/substrate/client/finality-grandpa-warp-sync/src/proof.rs b/substrate/client/finality-grandpa-warp-sync/src/proof.rs
index 4dd7b4f57f1..1b447d2ef72 100644
--- a/substrate/client/finality-grandpa-warp-sync/src/proof.rs
+++ b/substrate/client/finality-grandpa-warp-sync/src/proof.rs
@@ -46,6 +46,7 @@ pub struct AuthoritySetChangeProof<Block: BlockT> {
 #[derive(Decode, Encode)]
 pub struct WarpSyncProof<Block: BlockT> {
 	proofs: Vec<AuthoritySetChangeProof<Block>>,
+	is_finished: bool,
 }
 
 impl<Block: BlockT> WarpSyncProof<Block> {
@@ -86,8 +87,11 @@ impl<Block: BlockT> WarpSyncProof<Block> {
 
 		let mut proofs = Vec::new();
 
+		let mut proof_limit_reached = false;
+
 		for (_, last_block) in set_changes.iter_from(begin_number) {
 			if proofs.len() >= MAX_CHANGES_PER_WARP_SYNC_PROOF {
+				proof_limit_reached = true;
 				break;
 			}
 
@@ -118,7 +122,10 @@ impl<Block: BlockT> WarpSyncProof<Block> {
 			});
 		}
 
-		Ok(WarpSyncProof { proofs })
+		Ok(WarpSyncProof {
+			proofs,
+			is_finished: !proof_limit_reached,
+		})
 	}
 
 	/// Verifies the warp sync proof starting at the given set id and with the given authorities.
-- 
GitLab