@@ -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+
36183632impl<
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