@@ -1283,7 +1283,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
12831283 }
12841284
12851285 /// 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
12871287 {
12881288 let transaction_number = self.cur_holder_commitment_transaction_number;
12891289 let signer = self.holder_signer.as_ref();
@@ -1308,6 +1308,12 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
13081308 None
13091309 }
13101310 };
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();
13111317
13121318 let releasing_transaction_number = transaction_number + 2;
13131319 if releasing_transaction_number <= INITIAL_COMMITMENT_NUMBER {
@@ -2845,7 +2851,7 @@ impl<SP: Deref> Channel<SP> where
28452851 self.context.channel_state = ChannelState::FundingSent as u32;
28462852 }
28472853 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);
28492855 self.context.cur_counterparty_commitment_transaction_number -= 1;
28502856
28512857 log_info!(logger, "Received funding_signed from peer for channel {}", &self.context.channel_id());
@@ -3358,7 +3364,7 @@ impl<SP: Deref> Channel<SP> where
33583364 };
33593365
33603366 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);
33623368
33633369 // Note that if we need_commitment & !AwaitingRemoteRevoke we'll call
33643370 // build_commitment_no_status_check() next which will reset this to RAAFirst.
@@ -4048,6 +4054,7 @@ impl<SP: Deref> Channel<SP> where
40484054 }
40494055
40504056 let raa = if self.context.monitor_pending_revoke_and_ack {
4057+ self.context.update_holder_commitment_secret(logger);
40514058 self.get_last_revoke_and_ack(logger).or_else(|| {
40524059 log_trace!(logger, "Monitor was pending RAA, but RAA is not available; setting signer_pending_revoke_and_ack");
40534060 self.context.signer_pending_revoke_and_ack = true;
@@ -4141,9 +4148,14 @@ impl<SP: Deref> Channel<SP> where
41414148 log_trace!(logger, "Signing unblocked in channel {} at sequence {}",
41424149 &self.context.channel_id(), self.context.cur_holder_commitment_transaction_number);
41434150
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);
41474159 }
41484160
41494161 if self.context.channel_state & (ChannelState::PeerDisconnected as u32) != 0 {
@@ -4500,6 +4512,7 @@ impl<SP: Deref> Channel<SP> where
45004512 self.context.monitor_pending_revoke_and_ack = true;
45014513 None
45024514 } else {
4515+ self.context.update_holder_commitment_secret(logger);
45034516 self.get_last_revoke_and_ack(logger).map(|raa| {
45044517 if self.context.signer_pending_revoke_and_ack {
45054518 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 {
66916704 where L::Target: Logger
66926705 {
66936706 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);
66956708 self.get_open_channel(chain_hash.clone()).map(|msg| {
66966709 log_trace!(logger, "Clearing signer_pending_open_channel");
66976710 self.signer_pending_open_channel = false;
@@ -7200,7 +7213,7 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
72007213 self.context.channel_id = funding_txo.to_channel_id();
72017214 self.context.cur_counterparty_commitment_transaction_number -= 1;
72027215 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);
72047217
72057218 let (counterparty_initial_commitment_tx, funding_signed) = self.context.get_funding_signed_msg(logger);
72067219
@@ -7248,7 +7261,7 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
72487261 where L::Target: Logger
72497262 {
72507263 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);
72527265 self.generate_accept_channel_message().map(|msg| {
72537266 log_trace!(logger, "Clearing signer_pending_accept_channel");
72547267 self.signer_pending_accept_channel = false;
0 commit comments