Skip to content

Commit 2081c15

Browse files
committed
f tests
1 parent d270b0c commit 2081c15

File tree

1 file changed

+14
-18
lines changed

1 file changed

+14
-18
lines changed

lightning/src/chain/channelmonitor.rs

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2783,7 +2783,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
27832783
if let Some(txid) = self.prev_counterparty_commitment_txid {
27842784
if txid == confirmed_spend_txid {
27852785
if let Some(commitment_number) = self.counterparty_commitment_txn_on_chain.get(&txid) {
2786-
let htlc_outputs: Vec<HTLCOutputInCommitment> = self.counterparty_claimable_outpoints.get(&txid).unwrap().iter().map(|(htlc, _)| htlc.clone()).collect();
2786+
let htlc_outputs: Vec<HTLCOutputInCommitment> = self.counterparty_claimable_outpoints.get(&txid).unwrap_or(&vec![]).iter().map(|(htlc, _)| htlc.clone()).collect();
27872787
claim_htlcs!(*commitment_number, txid, htlc_outputs.as_ref());
27882788
} else {
27892789
debug_assert!(false);
@@ -3356,19 +3356,14 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
33563356

33573357
/// Returns the HTLC claim package templates and the counterparty output info
33583358
fn get_counterparty_output_claim_info(&self, commitment_number: u64, commitment_txid: Txid, tx: Option<&Transaction>, per_commitment_claimable_outpoints: &Vec<HTLCOutputInCommitment>)
3359-
-> (Vec<PackageTemplate>, CommitmentTxCounterpartyOutputInfo) {
3359+
-> (Vec<PackageTemplate>, CommitmentTxCounterpartyOutputInfo) {
33603360
let mut claimable_outpoints = Vec::new();
33613361
let mut to_counterparty_output_info: CommitmentTxCounterpartyOutputInfo = None;
33623362

3363-
// let per_commitment_claimable_outpoints = self.counterparty_claimable_outpoints.get(&commitment_txid).unwrap();
3364-
// let per_commitment_claimable_outpoints = match Some(per_commitment_claimable_outpoints) {
3365-
// Some(outputs) => outputs,
3366-
// None => return (claimable_outpoints, to_counterparty_output_info),
3367-
// };
3368-
let per_commitment_points = match self.their_cur_per_commitment_points {
3369-
Some(points) => points,
3370-
None => return (claimable_outpoints, to_counterparty_output_info),
3371-
};
3363+
if per_commitment_claimable_outpoints.is_empty() || self.their_cur_per_commitment_points.is_none(){
3364+
return (claimable_outpoints, to_counterparty_output_info);
3365+
}
3366+
let per_commitment_points = self.their_cur_per_commitment_points.as_ref().unwrap();
33723367

33733368
let per_commitment_point =
33743369
// If the counterparty commitment tx is the latest valid state, use their latest
@@ -3775,7 +3770,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
37753770
// (except for HTLC transactions for channels with anchor outputs), which is an easy
37763771
// way to filter out any potential non-matching txn for lazy filters.
37773772
let prevout = &tx.input[0].previous_output;
3778-
let per_commitment_claimable_outpoints: Vec<HTLCOutputInCommitment> = self.counterparty_claimable_outpoints.get(&tx.txid()).unwrap().iter().map(|(htlc, _)| htlc.clone()).collect();
3773+
let per_commitment_claimable_outpoints: Vec<HTLCOutputInCommitment> = self.counterparty_claimable_outpoints.get(&tx.txid()).unwrap_or(&vec![]).iter().map(|(htlc, _)| htlc.clone()).collect();
37793774
if prevout.txid == self.funding_info.0.txid && prevout.vout == self.funding_info.0.index as u32 {
37803775
let mut balance_spendable_csv = None;
37813776
log_info!(logger, "Channel {} closed by funding output spend in txid {}.",
@@ -4226,9 +4221,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
42264221
}
42274222

42284223
macro_rules! check_htlc_valid_counterparty {
4229-
($counterparty_txid: expr, $htlc_output: expr, $per_commitment_data: expr) => {
4230-
// if let Some(txid) = $counterparty_txid
4231-
{
4224+
($htlc_output: expr, $per_commitment_data: expr) => {
42324225
for &(ref pending_htlc, ref pending_source) in $per_commitment_data {
42334226
if pending_htlc.payment_hash == $htlc_output.payment_hash && pending_htlc.amount_msat == $htlc_output.amount_msat {
42344227
if let &Some(ref source) = pending_source {
@@ -4238,7 +4231,6 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
42384231
}
42394232
}
42404233
}
4241-
}
42424234
}
42434235
}
42444236

@@ -4255,9 +4247,13 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
42554247
// resolve the source HTLC with the original sender.
42564248
payment_data = Some(((*source).clone(), htlc_output.payment_hash, htlc_output.amount_msat));
42574249
} else if !$holder_tx {
4258-
check_htlc_valid_counterparty!(self.current_counterparty_commitment_txid, htlc_output, self.counterparty_claimable_outpoints.get(&self.current_counterparty_commitment_txid.unwrap()).unwrap());
4250+
if let Some(current_counterparty_commitment_txid) = &self.current_counterparty_commitment_txid {
4251+
check_htlc_valid_counterparty!(htlc_output, self.counterparty_claimable_outpoints.get(current_counterparty_commitment_txid).unwrap());
4252+
}
42594253
if payment_data.is_none() {
4260-
check_htlc_valid_counterparty!(self.prev_counterparty_commitment_txid, htlc_output, self.counterparty_claimable_outpoints.get(&self.prev_counterparty_commitment_txid.unwrap()).unwrap());
4254+
if let Some(prev_counterparty_commitment_txid) = &self.prev_counterparty_commitment_txid {
4255+
check_htlc_valid_counterparty!(htlc_output, self.counterparty_claimable_outpoints.get(prev_counterparty_commitment_txid).unwrap());
4256+
}
42614257
}
42624258
}
42634259
if payment_data.is_none() {

0 commit comments

Comments
 (0)