@@ -1283,7 +1283,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
1283
1283
}
1284
1284
1285
1285
/// Retrieves the next commitment point and previous commitment secret from the signer.
1286
- pub fn update_holder_per_commitment <L: Deref>(&mut self, logger: &L) where L::Target: Logger
1286
+ pub fn update_holder_per_commitment_point <L: Deref>(&mut self, logger: &L) where L::Target: Logger
1287
1287
{
1288
1288
let transaction_number = self.cur_holder_commitment_transaction_number;
1289
1289
let signer = self.holder_signer.as_ref();
@@ -1308,6 +1308,12 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
1308
1308
None
1309
1309
}
1310
1310
};
1311
+ }
1312
+
1313
+ pub fn update_holder_commitment_secret<L: Deref>(&mut self, logger: &L) where L::Target: Logger
1314
+ {
1315
+ let transaction_number = self.cur_holder_commitment_transaction_number;
1316
+ let signer = self.holder_signer.as_ref();
1311
1317
1312
1318
let releasing_transaction_number = transaction_number + 2;
1313
1319
if releasing_transaction_number <= INITIAL_COMMITMENT_NUMBER {
@@ -2845,7 +2851,7 @@ impl<SP: Deref> Channel<SP> where
2845
2851
self.context.channel_state = ChannelState::FundingSent as u32;
2846
2852
}
2847
2853
self.context.cur_holder_commitment_transaction_number -= 1;
2848
- self.context.update_holder_per_commitment (logger);
2854
+ self.context.update_holder_per_commitment_point (logger);
2849
2855
self.context.cur_counterparty_commitment_transaction_number -= 1;
2850
2856
2851
2857
log_info!(logger, "Received funding_signed from peer for channel {}", &self.context.channel_id());
@@ -3358,7 +3364,7 @@ impl<SP: Deref> Channel<SP> where
3358
3364
};
3359
3365
3360
3366
self.context.cur_holder_commitment_transaction_number -= 1;
3361
- self.context.update_holder_per_commitment (logger);
3367
+ self.context.update_holder_per_commitment_point (logger);
3362
3368
3363
3369
// Note that if we need_commitment & !AwaitingRemoteRevoke we'll call
3364
3370
// build_commitment_no_status_check() next which will reset this to RAAFirst.
@@ -4048,6 +4054,7 @@ impl<SP: Deref> Channel<SP> where
4048
4054
}
4049
4055
4050
4056
let raa = if self.context.monitor_pending_revoke_and_ack {
4057
+ self.context.update_holder_commitment_secret(logger);
4051
4058
self.get_last_revoke_and_ack(logger).or_else(|| {
4052
4059
log_trace!(logger, "Monitor was pending RAA, but RAA is not available; setting signer_pending_revoke_and_ack");
4053
4060
self.context.signer_pending_revoke_and_ack = true;
@@ -4141,9 +4148,14 @@ impl<SP: Deref> Channel<SP> where
4141
4148
log_trace!(logger, "Signing unblocked in channel {} at sequence {}",
4142
4149
&self.context.channel_id(), self.context.cur_holder_commitment_transaction_number);
4143
4150
4144
- if self.context.signer_pending_commitment_point || self.context.signer_pending_released_secret {
4145
- log_trace!(logger, "Attempting to update holder per-commitment for pending commitment point and secret...");
4146
- self.context.update_holder_per_commitment(logger);
4151
+ if self.context.signer_pending_commitment_point {
4152
+ log_trace!(logger, "Attempting to update holder per-commitment point...");
4153
+ self.context.update_holder_per_commitment_point(logger);
4154
+ }
4155
+
4156
+ if self.context.signer_pending_released_secret {
4157
+ log_trace!(logger, "Attempting to update holder commitment secret...");
4158
+ self.context.update_holder_commitment_secret(logger);
4147
4159
}
4148
4160
4149
4161
if self.context.channel_state & (ChannelState::PeerDisconnected as u32) != 0 {
@@ -4500,6 +4512,7 @@ impl<SP: Deref> Channel<SP> where
4500
4512
self.context.monitor_pending_revoke_and_ack = true;
4501
4513
None
4502
4514
} else {
4515
+ self.context.update_holder_commitment_secret(logger);
4503
4516
self.get_last_revoke_and_ack(logger).map(|raa| {
4504
4517
if self.context.signer_pending_revoke_and_ack {
4505
4518
log_trace!(logger, "Generated RAA for channel_reestablish; clearing signer_pending_revoke_and_ack");
@@ -6691,7 +6704,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
6691
6704
where L::Target: Logger
6692
6705
{
6693
6706
let open_channel = if self.signer_pending_open_channel {
6694
- self.context.update_holder_per_commitment (logger);
6707
+ self.context.update_holder_per_commitment_point (logger);
6695
6708
self.get_open_channel(chain_hash.clone()).map(|msg| {
6696
6709
log_trace!(logger, "Clearing signer_pending_open_channel");
6697
6710
self.signer_pending_open_channel = false;
@@ -7200,7 +7213,7 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
7200
7213
self.context.channel_id = funding_txo.to_channel_id();
7201
7214
self.context.cur_counterparty_commitment_transaction_number -= 1;
7202
7215
self.context.cur_holder_commitment_transaction_number -= 1;
7203
- self.context.update_holder_per_commitment (logger);
7216
+ self.context.update_holder_per_commitment_point (logger);
7204
7217
7205
7218
let (counterparty_initial_commitment_tx, funding_signed) = self.context.get_funding_signed_msg(logger);
7206
7219
@@ -7248,7 +7261,7 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
7248
7261
where L::Target: Logger
7249
7262
{
7250
7263
let accept_channel = if self.signer_pending_accept_channel {
7251
- self.context.update_holder_per_commitment (logger);
7264
+ self.context.update_holder_per_commitment_point (logger);
7252
7265
self.generate_accept_channel_message().map(|msg| {
7253
7266
log_trace!(logger, "Clearing signer_pending_accept_channel");
7254
7267
self.signer_pending_accept_channel = false;
0 commit comments