@@ -1650,7 +1650,8 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
16501650/// as long as we examine both the current counterparty commitment transaction and, if it hasn't
16511651/// been revoked yet, the previous one, we we will never "forget" to resolve an HTLC.
16521652macro_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) => { {
16541655 macro_rules! check_htlc_fails {
16551656 ( $txid: expr, $commitment_tx: expr) => {
16561657 if let Some ( ref latest_outpoints) = $self. counterparty_claimable_outpoints. get( $txid) {
@@ -1684,7 +1685,7 @@ macro_rules! fail_unbroadcast_htlcs {
16841685 }
16851686 } ) ;
16861687 let entry = OnchainEventEntry {
1687- txid: * $txid ,
1688+ txid: $commitment_txid_confirmed ,
16881689 height: $commitment_tx_conf_height,
16891690 event: OnchainEvent :: HTLCUpdate {
16901691 source: ( * * source) . clone( ) ,
@@ -1693,8 +1694,9 @@ macro_rules! fail_unbroadcast_htlcs {
16931694 commitment_tx_output_idx: None ,
16941695 } ,
16951696 } ;
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( ) ) ;
16981700 $self. onchain_events_awaiting_threshold_conf. push( entry) ;
16991701 }
17001702 }
@@ -2091,7 +2093,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
20912093 }
20922094 self . counterparty_commitment_txn_on_chain . insert ( commitment_txid, commitment_number) ;
20932095
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) ;
20952098 }
20962099 } else if let Some ( per_commitment_data) = per_commitment_option {
20972100 // While this isn't useful yet, there is a potential race where if a counterparty
@@ -2107,7 +2110,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
21072110 self . counterparty_commitment_txn_on_chain . insert ( commitment_txid, commitment_number) ;
21082111
21092112 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) ;
21112115
21122116 let htlc_claim_reqs = self . get_counterparty_htlc_output_claim_reqs ( commitment_number, commitment_txid, Some ( tx) ) ;
21132117 for req in htlc_claim_reqs {
@@ -2263,15 +2267,17 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
22632267 let res = self . get_broadcasted_holder_claims ( & self . current_holder_commitment_tx , height) ;
22642268 let mut to_watch = self . get_broadcasted_holder_watch_outputs ( & self . current_holder_commitment_tx , tx) ;
22652269 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) ;
22672272 } else if let & Some ( ref holder_tx) = & self . prev_holder_signed_commitment_tx {
22682273 if holder_tx. txid == commitment_txid {
22692274 is_holder_tx = true ;
22702275 log_info ! ( logger, "Got broadcast of previous holder commitment tx {}, searching for available HTLCs to claim" , commitment_txid) ;
22712276 let res = self . get_broadcasted_holder_claims ( holder_tx, height) ;
22722277 let mut to_watch = self . get_broadcasted_holder_watch_outputs ( holder_tx, tx) ;
22732278 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) ;
22752281 }
22762282 }
22772283
@@ -2552,7 +2558,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
25522558 matured_htlcs. push ( source. clone ( ) ) ;
25532559 }
25542560
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) ;
25562563 self . pending_monitor_events . push ( MonitorEvent :: HTLCEvent ( HTLCUpdate {
25572564 payment_hash,
25582565 payment_preimage : None ,
@@ -2631,7 +2638,10 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
26312638 F :: Target : FeeEstimator ,
26322639 L :: Target : Logger ,
26332640 {
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 } ) ;
26352645 self . onchain_tx_handler . transaction_unconfirmed ( txid, broadcaster, fee_estimator, logger) ;
26362646 }
26372647
0 commit comments