Skip to content

Commit 86a23fe

Browse files
Abstract params to make claim mon completion action
We'll be adding another parameter to this closure soon. Also this makes it a little clearer what's going on at the callsites.
1 parent 8fdad85 commit 86a23fe

1 file changed

Lines changed: 33 additions & 13 deletions

File tree

lightning/src/ln/channelmanager.rs

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3615,6 +3615,20 @@ impl TrustedChannelFeatures {
36153615
}
36163616
}
36173617

3618+
struct ClaimCompletionActionParams {
3619+
definitely_duplicate: bool,
3620+
inbound_htlc_value_msat: Option<u64>,
3621+
}
3622+
3623+
impl ClaimCompletionActionParams {
3624+
fn new_claim(inbound_htlc_value_msat: u64) -> Self {
3625+
Self { definitely_duplicate: false, inbound_htlc_value_msat: Some(inbound_htlc_value_msat) }
3626+
}
3627+
fn duplicate_claim() -> Self {
3628+
Self { definitely_duplicate: true, inbound_htlc_value_msat: None }
3629+
}
3630+
}
3631+
36183632
impl<
36193633
M: chain::Watch<SP::EcdsaSigner>,
36203634
T: BroadcasterInterface,
@@ -9545,9 +9559,9 @@ impl<
95459559
payment_info.clone(),
95469560
Some(attribution_data),
95479561
None,
9548-
|_, definitely_duplicate| {
9562+
|claim_action_params| {
95499563
debug_assert!(
9550-
!definitely_duplicate,
9564+
!claim_action_params.definitely_duplicate,
95519565
"We shouldn't claim duplicatively from a payment"
95529566
);
95539567
(
@@ -9619,7 +9633,9 @@ impl<
96199633
Some(attribution_data),
96209634
monitor_event_id
96219635
.map(|event_id| MonitorEventSource { event_id, channel_id: next_channel_id }),
9622-
|htlc_claim_value_msat, definitely_duplicate| {
9636+
|claim_completion_action_params| {
9637+
let ClaimCompletionActionParams { definitely_duplicate, inbound_htlc_value_msat } =
9638+
claim_completion_action_params;
96239639
let chan_to_release = EventUnblockedChannel {
96249640
counterparty_node_id: next_channel_counterparty_node_id,
96259641
funding_txo: next_channel_outpoint,
@@ -9689,7 +9705,7 @@ impl<
96899705
None,
96909706
)
96919707
} else {
9692-
let event = make_payment_forwarded_event(htlc_claim_value_msat);
9708+
let event = make_payment_forwarded_event(inbound_htlc_value_msat);
96939709
(
96949710
Some(MonitorUpdateCompletionAction::EmitEventOptionAndFreeOtherChannel {
96959711
event: event.map(|ev| ev.into()),
@@ -9704,8 +9720,7 @@ impl<
97049720

97059721
fn claim_funds_from_hop<
97069722
ComplFunc: FnOnce(
9707-
Option<u64>,
9708-
bool,
9723+
ClaimCompletionActionParams,
97099724
) -> (Option<MonitorUpdateCompletionAction>, Option<RAAMonitorUpdateBlockingAction>),
97109725
>(
97119726
&self, prev_hop: HTLCPreviousHopData, payment_preimage: PaymentPreimage,
@@ -9743,8 +9758,7 @@ impl<
97439758

97449759
fn claim_mpp_part<
97459760
ComplFunc: FnOnce(
9746-
Option<u64>,
9747-
bool,
9761+
ClaimCompletionActionParams,
97489762
) -> (Option<MonitorUpdateCompletionAction>, Option<RAAMonitorUpdateBlockingAction>),
97499763
>(
97509764
&self, prev_hop: HTLCClaimSource, payment_preimage: PaymentPreimage,
@@ -9792,8 +9806,9 @@ impl<
97929806

97939807
match fulfill_res {
97949808
UpdateFulfillCommitFetch::NewClaim { htlc_value_msat, monitor_update } => {
9795-
let (action_opt, raa_blocker_opt) =
9796-
completion_action(Some(htlc_value_msat), false);
9809+
let (action_opt, raa_blocker_opt) = completion_action(
9810+
ClaimCompletionActionParams::new_claim(htlc_value_msat),
9811+
);
97979812
if let Some(action) = action_opt {
97989813
log_trace!(
97999814
logger,
@@ -9828,7 +9843,9 @@ impl<
98289843
}
98299844
},
98309845
UpdateFulfillCommitFetch::DuplicateClaim {} => {
9831-
let (action_opt, raa_blocker_opt) = completion_action(None, true);
9846+
let (action_opt, raa_blocker_opt) =
9847+
completion_action(ClaimCompletionActionParams::duplicate_claim());
9848+
98329849
if let Some(raa_blocker) = raa_blocker_opt {
98339850
// If we're making a claim during startup, its a replay of a
98349851
// payment claim from a `ChannelMonitor`. In some cases (MPP or
@@ -9956,7 +9973,10 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
99569973
// `ChannelMonitorUpdate` we're about to generate. This may result in a duplicate `Event`,
99579974
// but note that `Event`s are generally always allowed to be duplicative (and it's
99589975
// specifically noted in `PaymentForwarded`).
9959-
let (action_opt, raa_blocker_opt) = completion_action(None, false);
9976+
let (action_opt, raa_blocker_opt) = completion_action(ClaimCompletionActionParams {
9977+
definitely_duplicate: false,
9978+
inbound_htlc_value_msat: None,
9979+
});
99609980

99619981
if let Some(raa_blocker) = raa_blocker_opt {
99629982
peer_state
@@ -20470,7 +20490,7 @@ impl<
2047020490
None,
2047120491
None,
2047220492
None,
20473-
|_, _| {
20493+
|_| {
2047420494
(
2047520495
Some(MonitorUpdateCompletionAction::PaymentClaimed {
2047620496
payment_hash,

0 commit comments

Comments
 (0)