@@ -2314,7 +2314,7 @@ where
2314
2314
monitor_pending_failures: Vec<(HTLCSource, PaymentHash, HTLCFailReason)>,
2315
2315
monitor_pending_finalized_fulfills: Vec<HTLCSource>,
2316
2316
monitor_pending_update_adds: Vec<msgs::UpdateAddHTLC>,
2317
- monitor_pending_tx_signatures: Option<msgs::TxSignatures> ,
2317
+ monitor_pending_tx_signatures: bool ,
2318
2318
2319
2319
/// If we went to send a revoke_and_ack but our signer was unable to give us a signature,
2320
2320
/// we should retry at some point in the future when the signer indicates it may have a
@@ -3280,7 +3280,7 @@ where
3280
3280
monitor_pending_failures: Vec::new(),
3281
3281
monitor_pending_finalized_fulfills: Vec::new(),
3282
3282
monitor_pending_update_adds: Vec::new(),
3283
- monitor_pending_tx_signatures: None ,
3283
+ monitor_pending_tx_signatures: false ,
3284
3284
3285
3285
signer_pending_revoke_and_ack: false,
3286
3286
signer_pending_commitment_update: false,
@@ -3521,7 +3521,7 @@ where
3521
3521
monitor_pending_failures: Vec::new(),
3522
3522
monitor_pending_finalized_fulfills: Vec::new(),
3523
3523
monitor_pending_update_adds: Vec::new(),
3524
- monitor_pending_tx_signatures: None ,
3524
+ monitor_pending_tx_signatures: false ,
3525
3525
3526
3526
signer_pending_revoke_and_ack: false,
3527
3527
signer_pending_commitment_update: false,
@@ -6715,12 +6715,12 @@ where
6715
6715
6716
6716
self.monitor_updating_paused(false, false, false, Vec::new(), Vec::new(), Vec::new());
6717
6717
6718
- if let Some(tx_signatures) = self.interactive_tx_signing_session.as_mut().and_then (
6718
+ if self.interactive_tx_signing_session.as_mut().map (
6719
6719
|session| session.received_commitment_signed()
6720
- ) {
6720
+ ).unwrap_or(false) {
6721
6721
// We're up first for submitting our tx_signatures, but our monitor has not persisted yet
6722
6722
// so they'll be sent as soon as that's done.
6723
- self.context.monitor_pending_tx_signatures = Some(tx_signatures) ;
6723
+ self.context.monitor_pending_tx_signatures = true ;
6724
6724
}
6725
6725
6726
6726
Ok(channel_monitor)
@@ -6804,13 +6804,13 @@ where
6804
6804
channel_id: Some(self.context.channel_id()),
6805
6805
};
6806
6806
6807
- let tx_signatures = self
6807
+ let tx_signatures_available = self
6808
6808
.interactive_tx_signing_session
6809
6809
.as_mut()
6810
6810
.expect("Signing session must exist for negotiated pending splice")
6811
6811
.received_commitment_signed();
6812
6812
self.monitor_updating_paused(false, false, false, Vec::new(), Vec::new(), Vec::new());
6813
- self.context.monitor_pending_tx_signatures = tx_signatures ;
6813
+ self.context.monitor_pending_tx_signatures = tx_signatures_available ;
6814
6814
6815
6815
Ok(self.push_ret_blockable_mon_update(monitor_update))
6816
6816
}
@@ -7646,7 +7646,7 @@ where
7646
7646
{
7647
7647
if self.is_awaiting_initial_mon_persist() {
7648
7648
log_debug!(logger, "Not sending tx_signatures: a monitor update is in progress. Setting monitor_pending_tx_signatures.");
7649
- self.context.monitor_pending_tx_signatures = Some(holder_tx_signatures) ;
7649
+ self.context.monitor_pending_tx_signatures = true ;
7650
7650
return Ok(None);
7651
7651
}
7652
7652
return Ok(Some(holder_tx_signatures));
@@ -7730,7 +7730,7 @@ where
7730
7730
// and sets it as pending.
7731
7731
if holder_tx_signatures_opt.is_some() && self.is_awaiting_initial_mon_persist() {
7732
7732
log_debug!(logger, "Not sending tx_signatures: a monitor update is in progress. Setting monitor_pending_tx_signatures.");
7733
- self.context.monitor_pending_tx_signatures = holder_tx_signatures_opt ;
7733
+ self.context.monitor_pending_tx_signatures = true ;
7734
7734
return Ok((None, None));
7735
7735
}
7736
7736
@@ -7989,14 +7989,16 @@ where
7989
7989
// For channels established with V2 establishment we won't send a `tx_signatures` when we're in
7990
7990
// MonitorUpdateInProgress (and we assume the user will never directly broadcast the funding
7991
7991
// transaction and waits for us to do it).
7992
- let tx_signatures = self.context.monitor_pending_tx_signatures.take();
7993
- if tx_signatures.is_some() {
7992
+ let tx_signatures_ready = self.context.monitor_pending_tx_signatures;
7993
+ self.context.monitor_pending_tx_signatures = false;
7994
+ let tx_signatures = if tx_signatures_ready {
7994
7995
if self.context.channel_state.is_their_tx_signatures_sent() {
7995
7996
self.context.channel_state = ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::new());
7996
7997
} else {
7997
7998
self.context.channel_state.set_our_tx_signatures_ready();
7998
7999
}
7999
- }
8000
+ self.interactive_tx_signing_session.as_ref().and_then(|session| session.holder_tx_signatures().clone())
8001
+ } else { None };
8000
8002
8001
8003
if self.context.channel_state.is_peer_disconnected() {
8002
8004
self.context.monitor_pending_revoke_and_ack = false;
@@ -8498,10 +8500,10 @@ where
8498
8500
if self.context.channel_state.is_monitor_update_in_progress() {
8499
8501
// The `monitor_pending_tx_signatures` field should have already been set in `commitment_signed_initial_v2`
8500
8502
// if we were up first for signing and had a monitor update in progress, but check again just in case.
8501
- debug_assert!(self.context.monitor_pending_tx_signatures.is_some() , "monitor_pending_tx_signatures should already be set");
8503
+ debug_assert!(self.context.monitor_pending_tx_signatures, "monitor_pending_tx_signatures should already be set");
8502
8504
log_debug!(logger, "Not sending tx_signatures: a monitor update is in progress. Setting monitor_pending_tx_signatures.");
8503
- if self.context.monitor_pending_tx_signatures.is_none() {
8504
- self.context.monitor_pending_tx_signatures = session.holder_tx_signatures().clone ();
8505
+ if ! self.context.monitor_pending_tx_signatures {
8506
+ self.context.monitor_pending_tx_signatures = session.holder_tx_signatures().is_some ();
8505
8507
}
8506
8508
None
8507
8509
} else {
@@ -13226,7 +13228,7 @@ where
13226
13228
monitor_pending_failures,
13227
13229
monitor_pending_finalized_fulfills: monitor_pending_finalized_fulfills.unwrap(),
13228
13230
monitor_pending_update_adds: monitor_pending_update_adds.unwrap_or_default(),
13229
- monitor_pending_tx_signatures: None ,
13231
+ monitor_pending_tx_signatures: false ,
13230
13232
13231
13233
signer_pending_revoke_and_ack: false,
13232
13234
signer_pending_commitment_update: false,
0 commit comments