@@ -1284,7 +1284,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
1284
1284
}
1285
1285
1286
1286
/// Retrieves the next commitment point and previous commitment secret from the signer.
1287
- pub fn update_holder_per_commitment <L: Deref>(&mut self, logger: &L) where L::Target: Logger
1287
+ pub fn update_holder_per_commitment_point <L: Deref>(&mut self, logger: &L) where L::Target: Logger
1288
1288
{
1289
1289
let transaction_number = self.cur_holder_commitment_transaction_number;
1290
1290
let signer = self.holder_signer.as_ref();
@@ -1309,6 +1309,12 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
1309
1309
None
1310
1310
}
1311
1311
};
1312
+ }
1313
+
1314
+ pub fn update_holder_commitment_secret<L: Deref>(&mut self, logger: &L) where L::Target: Logger
1315
+ {
1316
+ let transaction_number = self.cur_holder_commitment_transaction_number;
1317
+ let signer = self.holder_signer.as_ref();
1312
1318
1313
1319
let releasing_transaction_number = transaction_number + 2;
1314
1320
if releasing_transaction_number <= INITIAL_COMMITMENT_NUMBER {
@@ -2842,7 +2848,7 @@ impl<SP: Deref> Channel<SP> where
2842
2848
self.context.channel_state = ChannelState::FundingSent as u32;
2843
2849
}
2844
2850
self.context.cur_holder_commitment_transaction_number -= 1;
2845
- self.context.update_holder_per_commitment (logger);
2851
+ self.context.update_holder_per_commitment_point (logger);
2846
2852
self.context.cur_counterparty_commitment_transaction_number -= 1;
2847
2853
2848
2854
log_info!(logger, "Received funding_signed from peer for channel {}", &self.context.channel_id());
@@ -3355,7 +3361,7 @@ impl<SP: Deref> Channel<SP> where
3355
3361
};
3356
3362
3357
3363
self.context.cur_holder_commitment_transaction_number -= 1;
3358
- self.context.update_holder_per_commitment (logger);
3364
+ self.context.update_holder_per_commitment_point (logger);
3359
3365
3360
3366
// Note that if we need_commitment & !AwaitingRemoteRevoke we'll call
3361
3367
// build_commitment_no_status_check() next which will reset this to RAAFirst.
@@ -4045,6 +4051,7 @@ impl<SP: Deref> Channel<SP> where
4045
4051
}
4046
4052
4047
4053
let raa = if self.context.monitor_pending_revoke_and_ack {
4054
+ self.context.update_holder_commitment_secret(logger);
4048
4055
self.get_last_revoke_and_ack(logger).or_else(|| {
4049
4056
log_trace!(logger, "Monitor was pending RAA, but RAA is not available; setting signer_pending_revoke_and_ack");
4050
4057
self.context.signer_pending_revoke_and_ack = true;
@@ -4138,9 +4145,14 @@ impl<SP: Deref> Channel<SP> where
4138
4145
log_trace!(logger, "Signing unblocked in channel {} at sequence {}",
4139
4146
&self.context.channel_id(), self.context.cur_holder_commitment_transaction_number);
4140
4147
4141
- if self.context.signer_pending_commitment_point || self.context.signer_pending_released_secret {
4142
- log_trace!(logger, "Attempting to update holder per-commitment for pending commitment point and secret...");
4143
- self.context.update_holder_per_commitment(logger);
4148
+ if self.context.signer_pending_commitment_point {
4149
+ log_trace!(logger, "Attempting to update holder per-commitment point...");
4150
+ self.context.update_holder_per_commitment_point(logger);
4151
+ }
4152
+
4153
+ if self.context.signer_pending_released_secret {
4154
+ log_trace!(logger, "Attempting to update holder commitment secret...");
4155
+ self.context.update_holder_commitment_secret(logger);
4144
4156
}
4145
4157
4146
4158
if self.context.channel_state & (ChannelState::PeerDisconnected as u32) != 0 {
@@ -4494,6 +4506,7 @@ impl<SP: Deref> Channel<SP> where
4494
4506
self.context.monitor_pending_revoke_and_ack = true;
4495
4507
None
4496
4508
} else {
4509
+ self.context.update_holder_commitment_secret(logger);
4497
4510
self.get_last_revoke_and_ack(logger).map(|raa| {
4498
4511
if self.context.signer_pending_revoke_and_ack {
4499
4512
log_trace!(logger, "Generated RAA for channel_reestablish; clearing signer_pending_revoke_and_ack");
@@ -6667,7 +6680,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
6667
6680
where L::Target: Logger
6668
6681
{
6669
6682
let open_channel = if self.signer_pending_open_channel {
6670
- self.context.update_holder_per_commitment (logger);
6683
+ self.context.update_holder_per_commitment_point (logger);
6671
6684
self.get_open_channel(chain_hash.clone()).map(|msg| {
6672
6685
log_trace!(logger, "Clearing signer_pending_open_channel");
6673
6686
self.signer_pending_open_channel = false;
@@ -7176,7 +7189,7 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
7176
7189
self.context.channel_id = funding_txo.to_channel_id();
7177
7190
self.context.cur_counterparty_commitment_transaction_number -= 1;
7178
7191
self.context.cur_holder_commitment_transaction_number -= 1;
7179
- self.context.update_holder_per_commitment (logger);
7192
+ self.context.update_holder_per_commitment_point (logger);
7180
7193
7181
7194
let (counterparty_initial_commitment_tx, funding_signed) = self.context.get_funding_signed_msg(logger);
7182
7195
@@ -7224,7 +7237,7 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
7224
7237
where L::Target: Logger
7225
7238
{
7226
7239
let accept_channel = if self.signer_pending_accept_channel {
7227
- self.context.update_holder_per_commitment (logger);
7240
+ self.context.update_holder_per_commitment_point (logger);
7228
7241
self.generate_accept_channel_message().map(|msg| {
7229
7242
log_trace!(logger, "Clearing signer_pending_accept_channel");
7230
7243
self.signer_pending_accept_channel = false;
0 commit comments