Skip to content

Commit 28fff28

Browse files
committed
f: async signing
1 parent c5212bd commit 28fff28

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

lightning/src/ln/channel.rs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6144,19 +6144,27 @@ impl<SP: Deref> Channel<SP> where
61446144
if let Some((fee, skip_remote_output, fee_range, holder_sig)) = self.context.last_sent_closing_fee.clone() {
61456145
debug_assert!(holder_sig.is_none());
61466146
log_trace!(logger, "Attempting to generate pending closing_signed...");
6147-
let (closing_tx, fee) = self.build_closing_transaction(fee, skip_remote_output)?;
6148-
let closing_signed = self.get_closing_signed_msg(&closing_tx, skip_remote_output,
6149-
fee, fee_range.min_fee_satoshis, fee_range.max_fee_satoshis, logger);
6150-
let signed_tx = if let (Some(ClosingSigned { signature, .. }), Some(counterparty_sig)) =
6151-
(closing_signed.as_ref(), self.context.last_received_closing_sig) {
6152-
let funding_redeemscript = self.context.get_funding_redeemscript();
6153-
let sighash = closing_tx.trust().get_sighash_all(&funding_redeemscript, self.context.channel_value_satoshis);
6154-
debug_assert!(self.context.secp_ctx.verify_ecdsa(&sighash, &counterparty_sig,
6155-
&self.context.get_counterparty_pubkeys().funding_pubkey).is_ok());
6156-
Some(self.build_signed_closing_transaction(&closing_tx, &counterparty_sig, signature))
6157-
} else { None };
6158-
let shutdown_result = signed_tx.as_ref().map(|_| self.shutdown_result_coop_close());
6159-
(closing_signed, signed_tx, shutdown_result)
6147+
let closing_transaction_result = self.build_closing_transaction(fee, skip_remote_output);
6148+
match closing_transaction_result {
6149+
Ok((closing_tx, fee)) => {
6150+
let closing_signed = self.get_closing_signed_msg(&closing_tx, skip_remote_output,
6151+
fee, fee_range.min_fee_satoshis, fee_range.max_fee_satoshis, logger);
6152+
let signed_tx = if let (Some(ClosingSigned { signature, .. }), Some(counterparty_sig)) =
6153+
(closing_signed.as_ref(), self.context.last_received_closing_sig) {
6154+
let funding_redeemscript = self.context.get_funding_redeemscript();
6155+
let sighash = closing_tx.trust().get_sighash_all(&funding_redeemscript, self.context.channel_value_satoshis);
6156+
debug_assert!(self.context.secp_ctx.verify_ecdsa(&sighash, &counterparty_sig,
6157+
&self.context.get_counterparty_pubkeys().funding_pubkey).is_ok());
6158+
Some(self.build_signed_closing_transaction(&closing_tx, &counterparty_sig, signature))
6159+
} else { None };
6160+
let shutdown_result = signed_tx.as_ref().map(|_| self.shutdown_result_coop_close());
6161+
(closing_signed, signed_tx, shutdown_result)
6162+
}
6163+
Err(err) => {
6164+
let shutdown = self.context.force_shutdown(true, ClosureReason::ProcessingError {err: err.to_string()});
6165+
(None, None, Some(shutdown))
6166+
}
6167+
}
61606168
} else { (None, None, None) }
61616169
} else { (None, None, None) };
61626170

0 commit comments

Comments
 (0)