- //TODO: getting lastest holder transactions should be infallible and result in us "force-closing the channel", but we may
- // have empty holder commitment transaction if a ChannelMonitor is asked to force-close just after OutboundV1Channel::get_funding_created,
- // before providing a initial commitment transaction. For outbound channel, init ChannelMonitor at Channel::funding_signed, there is nothing
- // to monitor before.
- pub(crate) fn get_fully_signed_holder_tx(&mut self, funding_redeemscript: &Script) -> Transaction {
- let sig = self.signer.sign_holder_commitment(&self.holder_commitment, &self.secp_ctx).expect("signing holder commitment");
- self.holder_commitment.add_holder_sig(funding_redeemscript, sig)
+ pub(crate) fn get_maybe_signed_holder_tx(&mut self, funding_redeemscript: &Script) -> MaybeSignedTransaction {
+ let tx = self.signer.sign_holder_commitment(&self.holder_commitment, &self.secp_ctx)
+ .map(|sig| self.holder_commitment.add_holder_sig(funding_redeemscript, sig))
+ .unwrap_or_else(|_| self.get_unsigned_holder_commitment_tx().clone());
+ MaybeSignedTransaction(tx)