X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fchannelmanager.rs;h=997570ea31a8e27609b629d721b2e7746d08595f;hb=b2c5e3aedb00c9431ad9514a8200e773eec0ebf3;hp=bb9dbaba774a37ce22c6b1a003cf6acb62a60714;hpb=0ac839d8cd6362cc034a5e431d525dea28a75c2c;p=rust-lightning diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs index bb9dbaba7..997570ea3 100644 --- a/lightning/src/ln/channelmanager.rs +++ b/lightning/src/ln/channelmanager.rs @@ -3302,6 +3302,16 @@ impl ChannelMana let _persistence_guard = PersistenceNotifierGuard::new(&self.total_consistency_lock, &self.persistence_notifier); + + // This assertion should be enforced in tests, however we have a number of tests that + // were written before this requirement and do not meet it. + #[cfg(not(test))] + { + assert_eq!(*self.last_block_hash.read().unwrap(), header.prev_blockhash, + "Blocks must be connected in chain-order - the connected header must build on the last connected header"); + assert_eq!(self.latest_block_height.load(Ordering::Acquire) as u64, height as u64 - 1, + "Blocks must be connected in chain-order - the connected header must build on the last connected header"); + } self.latest_block_height.store(height as usize, Ordering::Release); *self.last_block_hash.write().unwrap() = block_hash; @@ -3418,6 +3428,8 @@ impl ChannelMana // See the docs for `ChannelManagerReadArgs` for more. let _persistence_guard = PersistenceNotifierGuard::new(&self.total_consistency_lock, &self.persistence_notifier); + assert_eq!(*self.last_block_hash.read().unwrap(), header.block_hash(), + "Blocks must be disconnected in chain-order - the disconnected header must be the last connected header"); self.latest_block_height.fetch_sub(1, Ordering::AcqRel); *self.last_block_hash.write().unwrap() = header.prev_blockhash;