Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 56b73e7

Browse files
committedFeb 11, 2025··
f: return global minimum
1 parent aa64a20 commit 56b73e7

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed
 

‎lightning/src/chain/channelmonitor.rs

+20-8
Original file line numberDiff line numberDiff line change
@@ -2743,35 +2743,47 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
27432743
fn closure_conf_target(&self) -> ConfirmationTarget {
27442744
// Treat the sweep as urgent as long as there is at least one HTLC which is pending on a
27452745
// valid commitment transaction.
2746+
let mut minimum_expiry = None;
2747+
let update_minimum_expiry = |local_minimum: Option<u32>, global_minimum: &mut Option<u32>| {
2748+
if let Some(expiry) = local_minimum {
2749+
*global_minimum = Some(global_minimum.map_or(expiry, |m| cmp::min(expiry, m)));
2750+
}
2751+
};
2752+
27462753
if !self.current_holder_commitment_tx.htlc_outputs.is_empty() {
2747-
let minimum_expiry = self.current_holder_commitment_tx.htlc_outputs
2754+
let local_minimum_expiry = self.current_holder_commitment_tx.htlc_outputs
27482755
.iter()
27492756
.map(|o| o.0.cltv_expiry)
27502757
.min();
2751-
return ConfirmationTarget::UrgentOnChainSweep(minimum_expiry);
2758+
update_minimum_expiry(local_minimum_expiry, &mut minimum_expiry);
27522759
}
27532760
if self.prev_holder_signed_commitment_tx.as_ref().map(|t| !t.htlc_outputs.is_empty()).unwrap_or(false) {
2754-
let minimum_expiry = self.prev_holder_signed_commitment_tx.as_ref().map(|t| t.htlc_outputs
2761+
let local_minimum_expiry = self.prev_holder_signed_commitment_tx.as_ref().map(|t| t.htlc_outputs
27552762
.iter()
27562763
.map(|o| o.0.cltv_expiry)
27572764
.min()
27582765
).flatten();
2759-
return ConfirmationTarget::UrgentOnChainSweep(minimum_expiry);
2766+
update_minimum_expiry(local_minimum_expiry, &mut minimum_expiry);
27602767
}
27612768
if let Some(txid) = self.current_counterparty_commitment_txid {
27622769
let claimable_outpoints = self.counterparty_claimable_outpoints.get(&txid).unwrap();
27632770
if !claimable_outpoints.is_empty() {
2764-
let minimum_expiry = claimable_outpoints.iter().map(|o|o.0.cltv_expiry).min();
2765-
return ConfirmationTarget::UrgentOnChainSweep(minimum_expiry);
2771+
let local_minimum_expiry = claimable_outpoints.iter().map(|o|o.0.cltv_expiry).min();
2772+
update_minimum_expiry(local_minimum_expiry, &mut minimum_expiry);
27662773
}
27672774
}
27682775
if let Some(txid) = self.prev_counterparty_commitment_txid {
27692776
let claimable_outpoints = self.counterparty_claimable_outpoints.get(&txid).unwrap();
27702777
if !claimable_outpoints.is_empty() {
2771-
let minimum_expiry = claimable_outpoints.iter().map(|o|o.0.cltv_expiry).min();
2772-
return ConfirmationTarget::UrgentOnChainSweep(minimum_expiry);
2778+
let local_minimum_expiry = claimable_outpoints.iter().map(|o|o.0.cltv_expiry).min();
2779+
update_minimum_expiry(local_minimum_expiry, &mut minimum_expiry);
27732780
}
27742781
}
2782+
2783+
if let Some(global_minimum) = minimum_expiry {
2784+
return ConfirmationTarget::UrgentOnChainSweep(Some(global_minimum))
2785+
}
2786+
27752787
ConfirmationTarget::OutputSpendingFee
27762788
}
27772789

0 commit comments

Comments
 (0)
Please sign in to comment.