@@ -1650,7 +1650,8 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
1650
1650
/// as long as we examine both the current counterparty commitment transaction and, if it hasn't
1651
1651
/// been revoked yet, the previous one, we we will never "forget" to resolve an HTLC.
1652
1652
macro_rules! fail_unbroadcast_htlcs {
1653
- ( $self: expr, $commitment_tx_type: expr, $commitment_tx_conf_height: expr, $confirmed_htlcs_list: expr, $logger: expr) => { {
1653
+ ( $self: expr, $commitment_tx_type: expr, $commitment_txid_confirmed: expr,
1654
+ $commitment_tx_conf_height: expr, $confirmed_htlcs_list: expr, $logger: expr) => { {
1654
1655
macro_rules! check_htlc_fails {
1655
1656
( $txid: expr, $commitment_tx: expr) => {
1656
1657
if let Some ( ref latest_outpoints) = $self. counterparty_claimable_outpoints. get( $txid) {
@@ -1684,7 +1685,7 @@ macro_rules! fail_unbroadcast_htlcs {
1684
1685
}
1685
1686
} ) ;
1686
1687
let entry = OnchainEventEntry {
1687
- txid: * $txid ,
1688
+ txid: $commitment_txid_confirmed ,
1688
1689
height: $commitment_tx_conf_height,
1689
1690
event: OnchainEvent :: HTLCUpdate {
1690
1691
source: ( * * source) . clone( ) ,
@@ -1693,8 +1694,9 @@ macro_rules! fail_unbroadcast_htlcs {
1693
1694
commitment_tx_output_idx: None ,
1694
1695
} ,
1695
1696
} ;
1696
- log_trace!( $logger, "Failing HTLC with payment_hash {} from {} counterparty commitment tx due to broadcast of {} commitment transaction, waiting for confirmation (at height {})" ,
1697
- log_bytes!( htlc. payment_hash. 0 ) , $commitment_tx, $commitment_tx_type, entry. confirmation_threshold( ) ) ;
1697
+ log_trace!( $logger, "Failing HTLC with payment_hash {} from {} counterparty commitment tx due to broadcast of {} commitment transaction {}, waiting for confirmation (at height {})" ,
1698
+ log_bytes!( htlc. payment_hash. 0 ) , $commitment_tx, $commitment_tx_type,
1699
+ $commitment_txid_confirmed, entry. confirmation_threshold( ) ) ;
1698
1700
$self. onchain_events_awaiting_threshold_conf. push( entry) ;
1699
1701
}
1700
1702
}
@@ -2091,7 +2093,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
2091
2093
}
2092
2094
self . counterparty_commitment_txn_on_chain . insert ( commitment_txid, commitment_number) ;
2093
2095
2094
- fail_unbroadcast_htlcs ! ( self , "revoked counterparty" , height, [ ] . iter( ) . map( |a| * a) , logger) ;
2096
+ fail_unbroadcast_htlcs ! ( self , "revoked counterparty" , commitment_txid, height,
2097
+ [ ] . iter( ) . map( |a| * a) , logger) ;
2095
2098
}
2096
2099
} else if let Some ( per_commitment_data) = per_commitment_option {
2097
2100
// While this isn't useful yet, there is a potential race where if a counterparty
@@ -2107,7 +2110,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
2107
2110
self . counterparty_commitment_txn_on_chain . insert ( commitment_txid, commitment_number) ;
2108
2111
2109
2112
log_info ! ( logger, "Got broadcast of non-revoked counterparty commitment transaction {}" , commitment_txid) ;
2110
- fail_unbroadcast_htlcs ! ( self , "counterparty" , height, per_commitment_data. iter( ) . map( |( a, b) | ( a, b. as_ref( ) . map( |b| b. as_ref( ) ) ) ) , logger) ;
2113
+ fail_unbroadcast_htlcs ! ( self , "counterparty" , commitment_txid, height,
2114
+ per_commitment_data. iter( ) . map( |( a, b) | ( a, b. as_ref( ) . map( |b| b. as_ref( ) ) ) ) , logger) ;
2111
2115
2112
2116
let htlc_claim_reqs = self . get_counterparty_htlc_output_claim_reqs ( commitment_number, commitment_txid, Some ( tx) ) ;
2113
2117
for req in htlc_claim_reqs {
@@ -2263,15 +2267,17 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
2263
2267
let res = self . get_broadcasted_holder_claims ( & self . current_holder_commitment_tx , height) ;
2264
2268
let mut to_watch = self . get_broadcasted_holder_watch_outputs ( & self . current_holder_commitment_tx , tx) ;
2265
2269
append_onchain_update ! ( res, to_watch) ;
2266
- fail_unbroadcast_htlcs ! ( self , "latest holder" , height, self . current_holder_commitment_tx. htlc_outputs. iter( ) . map( |( a, _, c) | ( a, c. as_ref( ) ) ) , logger) ;
2270
+ fail_unbroadcast_htlcs ! ( self , "latest holder" , commitment_txid, height,
2271
+ self . current_holder_commitment_tx. htlc_outputs. iter( ) . map( |( a, _, c) | ( a, c. as_ref( ) ) ) , logger) ;
2267
2272
} else if let & Some ( ref holder_tx) = & self . prev_holder_signed_commitment_tx {
2268
2273
if holder_tx. txid == commitment_txid {
2269
2274
is_holder_tx = true ;
2270
2275
log_info ! ( logger, "Got broadcast of previous holder commitment tx {}, searching for available HTLCs to claim" , commitment_txid) ;
2271
2276
let res = self . get_broadcasted_holder_claims ( holder_tx, height) ;
2272
2277
let mut to_watch = self . get_broadcasted_holder_watch_outputs ( holder_tx, tx) ;
2273
2278
append_onchain_update ! ( res, to_watch) ;
2274
- fail_unbroadcast_htlcs ! ( self , "previous holder" , height, holder_tx. htlc_outputs. iter( ) . map( |( a, _, c) | ( a, c. as_ref( ) ) ) , logger) ;
2279
+ fail_unbroadcast_htlcs ! ( self , "previous holder" , commitment_txid, height,
2280
+ holder_tx. htlc_outputs. iter( ) . map( |( a, _, c) | ( a, c. as_ref( ) ) ) , logger) ;
2275
2281
}
2276
2282
}
2277
2283
@@ -2552,7 +2558,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
2552
2558
matured_htlcs. push ( source. clone ( ) ) ;
2553
2559
}
2554
2560
2555
- log_debug ! ( logger, "HTLC {} failure update has got enough confirmations to be passed upstream" , log_bytes!( payment_hash. 0 ) ) ;
2561
+ log_debug ! ( logger, "HTLC {} failure update in {} has got enough confirmations to be passed upstream" ,
2562
+ log_bytes!( payment_hash. 0 ) , entry. txid) ;
2556
2563
self . pending_monitor_events . push ( MonitorEvent :: HTLCEvent ( HTLCUpdate {
2557
2564
payment_hash,
2558
2565
payment_preimage : None ,
@@ -2631,7 +2638,10 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
2631
2638
F :: Target : FeeEstimator ,
2632
2639
L :: Target : Logger ,
2633
2640
{
2634
- self . onchain_events_awaiting_threshold_conf . retain ( |ref entry| entry. txid != * txid) ;
2641
+ self . onchain_events_awaiting_threshold_conf . retain ( |ref entry| if entry. txid == * txid {
2642
+ log_info ! ( logger, "Removing onchain event with txid {}" , txid) ;
2643
+ false
2644
+ } else { true } ) ;
2635
2645
self . onchain_tx_handler . transaction_unconfirmed ( txid, broadcaster, fee_estimator, logger) ;
2636
2646
}
2637
2647
0 commit comments