Skip to content

Commit 599da4b

Browse files
committed
Rewrite ChannelManager::signer_unblocked
Exposing ChannelPhase in ChannelManager has led to verbose match statements, which need to be modified each time a ChannelPhase is added. Making ChannelPhase an implementation detail of Channel would help avoid this. As a step in this direction, update ChannelManager::signer_unblocked to use ChannelPhase::as_funded and a new method on ChannelPhase dispatching to each variant's signer_maybe_unblocked method.
1 parent 924ca82 commit 599da4b

File tree

2 files changed

+57
-15
lines changed

2 files changed

+57
-15
lines changed

lightning/src/ln/channel.rs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -909,6 +909,9 @@ pub(super) struct MonitorRestoreUpdates {
909909
pub(super) struct SignerResumeUpdates {
910910
pub commitment_update: Option<msgs::CommitmentUpdate>,
911911
pub revoke_and_ack: Option<msgs::RevokeAndACK>,
912+
pub open_channel: Option<msgs::OpenChannel>,
913+
pub accept_channel: Option<msgs::AcceptChannel>,
914+
pub funding_created: Option<msgs::FundingCreated>,
912915
pub funding_signed: Option<msgs::FundingSigned>,
913916
pub channel_ready: Option<msgs::ChannelReady>,
914917
pub order: RAACommitmentOrder,
@@ -1188,6 +1191,48 @@ impl<'a, SP: Deref> ChannelPhase<SP> where
11881191
None
11891192
}
11901193
}
1194+
1195+
pub fn signer_maybe_unblocked<L: Deref>(
1196+
&mut self, chain_hash: ChainHash, logger: &L,
1197+
) -> Option<SignerResumeUpdates> where L::Target: Logger {
1198+
match self {
1199+
ChannelPhase::Funded(chan) => Some(chan.signer_maybe_unblocked(logger)),
1200+
ChannelPhase::UnfundedOutboundV1(chan) => {
1201+
let (open_channel, funding_created) = chan.signer_maybe_unblocked(chain_hash, logger);
1202+
Some(SignerResumeUpdates {
1203+
commitment_update: None,
1204+
revoke_and_ack: None,
1205+
open_channel,
1206+
accept_channel: None,
1207+
funding_created,
1208+
funding_signed: None,
1209+
channel_ready: None,
1210+
order: chan.context.resend_order.clone(),
1211+
closing_signed: None,
1212+
signed_closing_tx: None,
1213+
shutdown_result: None,
1214+
})
1215+
},
1216+
ChannelPhase::UnfundedInboundV1(chan) => {
1217+
let logger = WithChannelContext::from(logger, &chan.context, None);
1218+
let accept_channel = chan.signer_maybe_unblocked(&&logger);
1219+
Some(SignerResumeUpdates {
1220+
commitment_update: None,
1221+
revoke_and_ack: None,
1222+
open_channel: None,
1223+
accept_channel,
1224+
funding_created: None,
1225+
funding_signed: None,
1226+
channel_ready: None,
1227+
order: chan.context.resend_order.clone(),
1228+
closing_signed: None,
1229+
signed_closing_tx: None,
1230+
shutdown_result: None,
1231+
})
1232+
},
1233+
ChannelPhase::UnfundedV2(_) => None,
1234+
}
1235+
}
11911236
}
11921237

11931238
/// Contains all state common to unfunded inbound/outbound channels.
@@ -6178,6 +6223,9 @@ impl<SP: Deref> Channel<SP> where
61786223
SignerResumeUpdates {
61796224
commitment_update,
61806225
revoke_and_ack,
6226+
open_channel: None,
6227+
accept_channel: None,
6228+
funding_created: None,
61816229
funding_signed,
61826230
channel_ready,
61836231
order: self.context.resend_order.clone(),

lightning/src/ln/channelmanager.rs

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9468,9 +9468,8 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
94689468
// Returns whether we should remove this channel as it's just been closed.
94699469
let unblock_chan = |phase: &mut ChannelPhase<SP>, pending_msg_events: &mut Vec<MessageSendEvent>| -> Option<ShutdownResult> {
94709470
let node_id = phase.context().get_counterparty_node_id();
9471-
match phase {
9472-
ChannelPhase::Funded(chan) => {
9473-
let msgs = chan.signer_maybe_unblocked(&self.logger);
9471+
match (phase.signer_maybe_unblocked(self.chain_hash, &self.logger), phase.as_funded()) {
9472+
(Some(msgs), Some(chan)) => {
94749473
let cu_msg = msgs.commitment_update.map(|updates| events::MessageSendEvent::UpdateHTLCs {
94759474
node_id,
94769475
updates,
@@ -9521,34 +9520,29 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
95219520
}
95229521
}
95239522
msgs.shutdown_result
9524-
}
9525-
ChannelPhase::UnfundedOutboundV1(chan) => {
9526-
let (open_channel, funding_created) = chan.signer_maybe_unblocked(self.chain_hash.clone(), &self.logger);
9527-
if let Some(msg) = open_channel {
9523+
},
9524+
(Some(msgs), None) => {
9525+
if let Some(msg) = msgs.open_channel {
95289526
pending_msg_events.push(events::MessageSendEvent::SendOpenChannel {
95299527
node_id,
95309528
msg,
95319529
});
95329530
}
9533-
if let Some(msg) = funding_created {
9531+
if let Some(msg) = msgs.funding_created {
95349532
pending_msg_events.push(events::MessageSendEvent::SendFundingCreated {
95359533
node_id,
95369534
msg,
95379535
});
95389536
}
9539-
None
9540-
}
9541-
ChannelPhase::UnfundedInboundV1(chan) => {
9542-
let logger = WithChannelContext::from(&self.logger, &chan.context, None);
9543-
if let Some(msg) = chan.signer_maybe_unblocked(&&logger) {
9537+
if let Some(msg) = msgs.accept_channel {
95449538
pending_msg_events.push(events::MessageSendEvent::SendAcceptChannel {
95459539
node_id,
95469540
msg,
95479541
});
95489542
}
95499543
None
9550-
},
9551-
ChannelPhase::UnfundedV2(_) => None,
9544+
}
9545+
(None, _) => None,
95529546
}
95539547
};
95549548

0 commit comments

Comments
 (0)