Merge pull request #1846 from TheBlueMatt/2022-11-more-robust-unconfirmed

Handle `transaction_unconfirmed` as a full reorg to the tx height
This commit is contained in:
Matt Corallo 2022-11-19 00:06:32 +00:00 committed by GitHub
commit d7d3b0ec75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3111,10 +3111,24 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
F::Target: FeeEstimator,
L::Target: Logger,
{
self.onchain_events_awaiting_threshold_conf.retain(|ref entry| if entry.txid == *txid {
log_info!(logger, "Removing onchain event with txid {}", txid);
false
} else { true });
let mut removed_height = None;
for entry in self.onchain_events_awaiting_threshold_conf.iter() {
if entry.txid == *txid {
removed_height = Some(entry.height);
break;
}
}
if let Some(removed_height) = removed_height {
log_info!(logger, "transaction_unconfirmed of txid {} implies height {} was reorg'd out", txid, removed_height);
self.onchain_events_awaiting_threshold_conf.retain(|ref entry| if entry.height >= removed_height {
log_info!(logger, "Transaction {} reorg'd out", entry.txid);
false
} else { true });
}
debug_assert!(!self.onchain_events_awaiting_threshold_conf.iter().any(|ref entry| entry.txid == *txid));
self.onchain_tx_handler.transaction_unconfirmed(txid, broadcaster, fee_estimator, logger);
}