@@ -2937,23 +2937,19 @@ where
2937
2937
for (idx, outp) in signing_session.unsigned_tx().outputs().enumerate() {
2938
2938
if outp.script_pubkey() == &expected_spk && outp.value() == self.funding.get_value_satoshis() {
2939
2939
if output_index.is_some() {
2940
- return Err(ChannelError::Close(
2941
- (
2942
- "Multiple outputs matched the expected script and value".to_owned(),
2943
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) },
2944
- )));
2940
+ let msg = "Multiple outputs matched the expected script and value";
2941
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned() };
2942
+ return Err(ChannelError::Close((msg.to_owned(), reason)));
2945
2943
}
2946
2944
output_index = Some(idx as u16);
2947
2945
}
2948
2946
}
2949
2947
let outpoint = if let Some(output_index) = output_index {
2950
2948
OutPoint { txid: signing_session.unsigned_tx().compute_txid(), index: output_index }
2951
2949
} else {
2952
- return Err(ChannelError::Close(
2953
- (
2954
- "No output matched the funding script_pubkey".to_owned(),
2955
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) },
2956
- )));
2950
+ let msg = "No output matched the funding script_pubkey";
2951
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned() };
2952
+ return Err(ChannelError::Close((msg.to_owned(), reason)));
2957
2953
};
2958
2954
self.funding.channel_transaction_parameters.funding_outpoint = Some(outpoint);
2959
2955
@@ -2974,10 +2970,9 @@ where
2974
2970
false,
2975
2971
"Zero inputs were provided & zero witnesses were provided, but a count mismatch was somehow found",
2976
2972
);
2977
- return Err(ChannelError::Close((
2978
- "V2 channel rejected due to sender error".into(),
2979
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) }
2980
- )));
2973
+ let msg = "V2 channel rejected due to sender error";
2974
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned() };
2975
+ return Err(ChannelError::Close((msg.to_owned(), reason)));
2981
2976
}
2982
2977
None
2983
2978
} else {
@@ -2999,10 +2994,9 @@ where
2999
2994
false,
3000
2995
"We don't support users providing inputs but somehow we had more than zero inputs",
3001
2996
);
3002
- return Err(ChannelError::Close((
3003
- "V2 channel rejected due to sender error".into(),
3004
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) }
3005
- )));
2997
+ let msg = "V2 channel rejected due to sender error";
2998
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned() };
2999
+ return Err(ChannelError::Close((msg.to_owned(), reason)));
3006
3000
};
3007
3001
3008
3002
let mut channel_state = ChannelState::FundingNegotiated(FundingNegotiatedFlags::new());
@@ -5556,11 +5550,11 @@ where
5556
5550
let channel_parameters = &funding.channel_transaction_parameters;
5557
5551
ecdsa.sign_counterparty_commitment(channel_parameters, &counterparty_initial_commitment_tx, Vec::new(), Vec::new(), &self.secp_ctx)
5558
5552
.map(|(signature, _)| signature)
5559
- .map_err(|_| ChannelError::Close(
5560
- (
5561
- "Failed to get signatures for new commitment_signed" .to_owned(),
5562
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) },
5563
- )) )
5553
+ .map_err(|()| {
5554
+ let msg = "Failed to get signatures for new commitment_signed";
5555
+ let reason = ClosureReason::ProcessingError { err: msg .to_owned() };
5556
+ ChannelError::Close((msg.to_owned(), reason))
5557
+ } )
5564
5558
},
5565
5559
// TODO (taproot|arik)
5566
5560
#[cfg(taproot)]
@@ -5581,10 +5575,10 @@ where
5581
5575
if flags == (NegotiatingFundingFlags::OUR_INIT_SENT | NegotiatingFundingFlags::THEIR_INIT_SENT)
5582
5576
) {
5583
5577
debug_assert!(false);
5584
- return Err(ChannelError::Close(( "Tried to get an initial commitment_signed messsage at a time other than \
5585
- immediately after initial handshake completion (or tried to get funding_created twice)".to_string(),
5586
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(true ) }
5587
- )));
5578
+ let msg = "Tried to get an initial commitment_signed messsage at a time other than \
5579
+ immediately after initial handshake completion (or tried to get funding_created twice)";
5580
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned( ) };
5581
+ return Err(ChannelError::Close((msg.to_owned(), reason )));
5588
5582
}
5589
5583
5590
5584
let signature = match self.get_initial_counterparty_commitment_signature(funding, logger) {
@@ -6713,11 +6707,9 @@ where
6713
6707
if !self.context.channel_state.is_interactive_signing()
6714
6708
|| self.context.channel_state.is_their_tx_signatures_sent()
6715
6709
{
6716
- return Err(ChannelError::Close(
6717
- (
6718
- "Received initial commitment_signed before funding transaction constructed or after peer's tx_signatures received!".to_owned(),
6719
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) },
6720
- )));
6710
+ let msg = "Received initial commitment_signed before funding transaction constructed or after peer's tx_signatures received!";
6711
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned() };
6712
+ return Err(ChannelError::Close((msg.to_owned(), reason)));
6721
6713
}
6722
6714
6723
6715
let holder_commitment_point = &mut self.holder_commitment_point.clone();
@@ -7652,22 +7644,18 @@ where
7652
7644
7653
7645
if let Some(ref mut signing_session) = self.interactive_tx_signing_session {
7654
7646
if msg.tx_hash != signing_session.unsigned_tx().compute_txid() {
7655
- return Err(ChannelError::Close(
7656
- (
7657
- "The txid for the transaction does not match".to_string(),
7658
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) },
7659
- )));
7647
+ let msg = "The txid for the transaction does not match";
7648
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned() };
7649
+ return Err(ChannelError::Close((msg.to_owned(), reason)));
7660
7650
}
7661
7651
7662
7652
// We need to close the channel if our peer hasn't sent their commitment signed already.
7663
7653
// Technically we'd wait on having an initial monitor persisted, so we shouldn't be broadcasting
7664
7654
// the transaction, but this may risk losing funds for a manual broadcast if we continue.
7665
7655
if !signing_session.has_received_commitment_signed() {
7666
- return Err(ChannelError::Close(
7667
- (
7668
- "Received tx_signatures before initial commitment_signed".to_string(),
7669
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) },
7670
- )));
7656
+ let msg = "Received tx_signatures before initial commitment_signed";
7657
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned() };
7658
+ return Err(ChannelError::Close((msg.to_owned(), reason)));
7671
7659
}
7672
7660
7673
7661
if msg.witnesses.len() != signing_session.remote_inputs_count() {
@@ -7678,11 +7666,9 @@ where
7678
7666
7679
7667
for witness in &msg.witnesses {
7680
7668
if witness.is_empty() {
7681
- return Err(ChannelError::Close(
7682
- (
7683
- "Unexpected empty witness in tx_signatures received".to_string(),
7684
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) },
7685
- )));
7669
+ let msg = "Unexpected empty witness in tx_signatures received";
7670
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned() };
7671
+ return Err(ChannelError::Close((msg.to_owned(), reason)));
7686
7672
}
7687
7673
7688
7674
// TODO(dual_funding): Check all sigs are SIGHASH_ALL.
@@ -7718,10 +7704,9 @@ where
7718
7704
self.context.channel_state = ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::new());
7719
7705
Ok((funding_tx_opt, holder_tx_signatures_opt))
7720
7706
} else {
7721
- Err(ChannelError::Close((
7722
- "Unexpected tx_signatures. No funding transaction awaiting signatures".to_string(),
7723
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) },
7724
- )))
7707
+ let msg = "Unexpected tx_signatures. No funding transaction awaiting signatures";
7708
+ let reason = ClosureReason::ProcessingError { err: msg.to_owned() };
7709
+ return Err(ChannelError::Close((msg.to_owned(), reason)));
7725
7710
}
7726
7711
}
7727
7712
@@ -12056,10 +12041,10 @@ where
12056
12041
outputs_to_contribute: Vec::new(),
12057
12042
expected_remote_shared_funding_output: Some((funding.get_funding_redeemscript().to_p2wsh(), funding.get_value_satoshis())),
12058
12043
}
12059
- ).map_err(|_| ChannelError::Close((
12060
- "V2 channel rejected due to sender error".into(),
12061
- ClosureReason::HolderForceClosed { broadcasted_latest_txn: Some(false) }
12062
- )) )?);
12044
+ ).map_err(|err| {
12045
+ let reason = ClosureReason::ProcessingError { err: err.to_string() };
12046
+ ChannelError::Close((err.to_string(), reason))
12047
+ } )?);
12063
12048
12064
12049
let unfunded_context = UnfundedChannelContext {
12065
12050
unfunded_channel_age_ticks: 0,
0 commit comments