@@ -2084,9 +2084,16 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
2084
2084
{
2085
2085
let block_hash = header. block_hash ( ) ;
2086
2086
log_trace ! ( logger, "New best block {} at height {}" , block_hash, height) ;
2087
- self . best_block = BestBlock :: new ( block_hash, height) ;
2088
2087
2089
- self . block_confirmed ( height, vec ! [ ] , vec ! [ ] , vec ! [ ] , broadcaster, fee_estimator, logger)
2088
+ if height > self . best_block . height ( ) {
2089
+ self . best_block = BestBlock :: new ( block_hash, height) ;
2090
+ self . block_confirmed ( height, vec ! [ ] , vec ! [ ] , vec ! [ ] , broadcaster, fee_estimator, logger)
2091
+ } else {
2092
+ self . best_block = BestBlock :: new ( block_hash, height) ;
2093
+ self . onchain_events_waiting_threshold_conf . retain ( |ref entry| entry. height <= height) ;
2094
+ self . onchain_tx_handler . block_disconnected ( height + 1 , broadcaster, fee_estimator, logger) ;
2095
+ Vec :: new ( )
2096
+ }
2090
2097
}
2091
2098
2092
2099
fn transactions_confirmed < B : Deref , F : Deref , L : Deref > (
@@ -2275,7 +2282,7 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
2275
2282
//We may discard:
2276
2283
//- htlc update there as failure-trigger tx (revoked commitment tx, non-revoked commitment tx, HTLC-timeout tx) has been disconnected
2277
2284
//- maturing spendable output has transaction paying us has been disconnected
2278
- self . onchain_events_waiting_threshold_conf . retain ( |ref entry| entry. height != height) ;
2285
+ self . onchain_events_waiting_threshold_conf . retain ( |ref entry| entry. height < height) ;
2279
2286
2280
2287
self . onchain_tx_handler . block_disconnected ( height, broadcaster, fee_estimator, logger) ;
2281
2288
0 commit comments