@@ -3606,7 +3606,6 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
36063606 }
36073607 bitcoin_tx.txid
36083608 };
3609- let mut htlcs_cloned: Vec<_> = commitment_data.htlcs_included.iter().map(|htlc| (htlc.0.clone(), htlc.1.map(|h| h.clone()))).collect();
36103609
36113610 // If our counterparty updated the channel fee in this commitment transaction, check that
36123611 // they can actually afford the new fee now.
@@ -3644,8 +3643,8 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
36443643
36453644 let holder_keys = commitment_data.tx.trust().keys();
36463645 let mut nondust_htlc_sources = Vec::with_capacity(commitment_data.tx.nondust_htlcs().len());
3647- let mut dust_htlcs = Vec::with_capacity(htlcs_cloned .len() - commitment_data.tx.nondust_htlcs().len());
3648- for (idx, (htlc, mut source_opt)) in htlcs_cloned.drain(.. ).enumerate() {
3646+ let mut dust_htlcs = Vec::with_capacity(commitment_data.htlcs_included .len() - commitment_data.tx.nondust_htlcs().len());
3647+ for (idx, (htlc, mut source_opt)) in commitment_data.htlcs_included.into_iter( ).enumerate() {
36493648 if let Some(_) = htlc.transaction_output_index {
36503649 let htlc_tx = chan_utils::build_htlc_transaction(&commitment_txid, commitment_data.tx.feerate_per_kw(),
36513650 funding.get_counterparty_selected_contest_delay().unwrap(), &htlc, &self.channel_type,
@@ -3662,13 +3661,13 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
36623661 }
36633662 if htlc.offered {
36643663 if let Some(source) = source_opt.take() {
3665- nondust_htlc_sources.push(source);
3664+ nondust_htlc_sources.push(source.clone() );
36663665 } else {
36673666 panic!("Missing outbound HTLC source");
36683667 }
36693668 }
36703669 } else {
3671- dust_htlcs.push((htlc, None, source_opt.take()));
3670+ dust_htlcs.push((htlc, None, source_opt.take().cloned() ));
36723671 }
36733672 debug_assert!(source_opt.is_none(), "HTLCSource should have been put somewhere");
36743673 }
@@ -8779,11 +8778,11 @@ impl<SP: Deref> FundedChannel<SP> where
87798778 }
87808779 self.context.resend_order = RAACommitmentOrder::RevokeAndACKFirst;
87818780
8782- let (mut htlcs_ref, counterparty_commitment_tx) =
8781+ let (htlcs_ref, counterparty_commitment_tx) =
87838782 self.build_commitment_no_state_update(logger);
87848783 let counterparty_commitment_txid = counterparty_commitment_tx.trust().txid();
8785- let htlcs : Vec<(HTLCOutputInCommitment, Option<Box<HTLCSource>>)> =
8786- htlcs_ref.drain(.. ).map(|(htlc, htlc_source)| (htlc, htlc_source.map(|source_ref| Box::new(source_ref.clone())))).collect();
8784+ let htlc_outputs : Vec<(HTLCOutputInCommitment, Option<Box<HTLCSource>>)> =
8785+ htlcs_ref.into_iter( ).map(|(htlc, htlc_source)| (htlc, htlc_source.map(|source_ref| Box::new(source_ref.clone())))).collect();
87878786
87888787 if self.context.announcement_sigs_state == AnnouncementSigsState::MessageSent {
87898788 self.context.announcement_sigs_state = AnnouncementSigsState::Committed;
@@ -8796,7 +8795,7 @@ impl<SP: Deref> FundedChannel<SP> where
87968795 // and provide the full commit tx instead of the information needed to rebuild it.
87978796 updates: vec![ChannelMonitorUpdateStep::LatestCounterpartyCommitmentTXInfo {
87988797 commitment_txid: counterparty_commitment_txid,
8799- htlc_outputs: htlcs.clone() ,
8798+ htlc_outputs,
88008799 commitment_number: self.context.cur_counterparty_commitment_transaction_number,
88018800 their_per_commitment_point: self.context.counterparty_cur_commitment_point.unwrap(),
88028801 feerate_per_kw: Some(counterparty_commitment_tx.feerate_per_kw()),
0 commit comments