@@ -9440,8 +9440,11 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
94409440 }
94419441 }
94429442
9443- #[rustfmt::skip]
9444- fn handle_monitor_update_completion_actions<I: IntoIterator<Item=MonitorUpdateCompletionAction>>(&self, actions: I) {
9443+ fn handle_monitor_update_completion_actions<
9444+ I: IntoIterator<Item = MonitorUpdateCompletionAction>,
9445+ >(
9446+ &self, actions: I,
9447+ ) {
94459448 debug_assert_ne!(self.pending_events.held_by_thread(), LockHeldState::HeldByThread);
94469449 debug_assert_ne!(self.claimable_payments.held_by_thread(), LockHeldState::HeldByThread);
94479450 debug_assert_ne!(self.per_peer_state.held_by_thread(), LockHeldState::HeldByThread);
@@ -9450,48 +9453,84 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
94509453
94519454 for action in actions.into_iter() {
94529455 match action {
9453- MonitorUpdateCompletionAction::PaymentClaimed { payment_hash, pending_mpp_claim } => {
9454- let (peer_id, chan_id) = pending_mpp_claim.as_ref().map(|c| (Some(c.0), Some(c.1))).unwrap_or_default();
9455- let logger = WithContext::from(&self.logger, peer_id, chan_id, Some(payment_hash));
9456+ MonitorUpdateCompletionAction::PaymentClaimed {
9457+ payment_hash,
9458+ pending_mpp_claim,
9459+ } => {
9460+ let (peer_id, chan_id) = pending_mpp_claim
9461+ .as_ref()
9462+ .map(|c| (Some(c.0), Some(c.1)))
9463+ .unwrap_or_default();
9464+ let logger =
9465+ WithContext::from(&self.logger, peer_id, chan_id, Some(payment_hash));
94569466 log_trace!(logger, "Handling PaymentClaimed monitor update completion action");
94579467
94589468 if let Some((counterparty_node_id, chan_id, claim_ptr)) = pending_mpp_claim {
94599469 let per_peer_state = self.per_peer_state.read().unwrap();
94609470 per_peer_state.get(&counterparty_node_id).map(|peer_state_mutex| {
94619471 let mut peer_state = peer_state_mutex.lock().unwrap();
9462- let blockers_entry = peer_state.actions_blocking_raa_monitor_updates.entry(chan_id);
9472+ let blockers_entry =
9473+ peer_state.actions_blocking_raa_monitor_updates.entry(chan_id);
94639474 if let btree_map::Entry::Occupied(mut blockers) = blockers_entry {
9464- blockers.get_mut().retain(|blocker|
9465- if let &RAAMonitorUpdateBlockingAction::ClaimedMPPPayment { pending_claim } = &blocker {
9475+ blockers.get_mut().retain(|blocker| {
9476+ if let &RAAMonitorUpdateBlockingAction::ClaimedMPPPayment {
9477+ pending_claim,
9478+ } = &blocker
9479+ {
94669480 if *pending_claim == claim_ptr {
9467- let mut pending_claim_state_lock = pending_claim.0.lock().unwrap();
9468- let pending_claim_state = &mut *pending_claim_state_lock;
9469- pending_claim_state.channels_without_preimage.retain(|(cp, cid)| {
9470- let this_claim =
9471- *cp == counterparty_node_id && *cid == chan_id;
9472- if this_claim {
9473- pending_claim_state.channels_with_preimage.push((*cp, *cid));
9474- false
9475- } else { true }
9476- });
9477- if pending_claim_state.channels_without_preimage.is_empty() {
9478- for (cp, cid) in pending_claim_state.channels_with_preimage.iter() {
9481+ let mut pending_claim_state_lock =
9482+ pending_claim.0.lock().unwrap();
9483+ let pending_claim_state =
9484+ &mut *pending_claim_state_lock;
9485+ pending_claim_state.channels_without_preimage.retain(
9486+ |(cp, cid)| {
9487+ let this_claim = *cp == counterparty_node_id
9488+ && *cid == chan_id;
9489+ if this_claim {
9490+ pending_claim_state
9491+ .channels_with_preimage
9492+ .push((*cp, *cid));
9493+ false
9494+ } else {
9495+ true
9496+ }
9497+ },
9498+ );
9499+ if pending_claim_state
9500+ .channels_without_preimage
9501+ .is_empty()
9502+ {
9503+ for (cp, cid) in pending_claim_state
9504+ .channels_with_preimage
9505+ .iter()
9506+ {
94799507 let freed_chan = (*cp, *cid, blocker.clone());
94809508 freed_channels.push(freed_chan);
94819509 }
94829510 }
9483- !pending_claim_state.channels_without_preimage.is_empty()
9484- } else { true }
9485- } else { true }
9486- );
9511+ !pending_claim_state
9512+ .channels_without_preimage
9513+ .is_empty()
9514+ } else {
9515+ true
9516+ }
9517+ } else {
9518+ true
9519+ }
9520+ });
94879521 if blockers.get().is_empty() {
94889522 blockers.remove();
94899523 }
94909524 }
94919525 });
94929526 }
94939527
9494- let payment = self.claimable_payments.lock().unwrap().pending_claiming_payments.remove(&payment_hash);
9528+ let payment = self
9529+ .claimable_payments
9530+ .lock()
9531+ .unwrap()
9532+ .pending_claiming_payments
9533+ .remove(&payment_hash);
94959534 if let Some(ClaimingPayment {
94969535 amount_msat,
94979536 payment_purpose: purpose,
@@ -9501,7 +9540,8 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
95019540 onion_fields,
95029541 payment_id,
95039542 durable_preimage_channel,
9504- }) = payment {
9543+ }) = payment
9544+ {
95059545 let event = events::Event::PaymentClaimed {
95069546 payment_hash,
95079547 purpose,
@@ -9512,8 +9552,8 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
95129552 onion_fields,
95139553 payment_id,
95149554 };
9515- let action = if let Some((outpoint, counterparty_node_id, channel_id))
9516- = durable_preimage_channel
9555+ let action = if let Some((outpoint, counterparty_node_id, channel_id)) =
9556+ durable_preimage_channel
95179557 {
95189558 Some(EventCompletionAction::ReleaseRAAChannelMonitorUpdate {
95199559 channel_funding_outpoint: Some(outpoint),
@@ -9530,13 +9570,18 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
95309570 // `payment_id` should suffice to ensure we never spuriously drop a second
95319571 // event for a duplicate payment.
95329572 if !pending_events.contains(&event_action) {
9533- log_trace!(logger, "Queuing PaymentClaimed event with event completion action {:?}", event_action.1);
9573+ log_trace!(
9574+ logger,
9575+ "Queuing PaymentClaimed event with event completion action {:?}",
9576+ event_action.1
9577+ );
95349578 pending_events.push_back(event_action);
95359579 }
95369580 }
95379581 },
95389582 MonitorUpdateCompletionAction::EmitEventAndFreeOtherChannel {
9539- event, downstream_counterparty_and_funding_outpoint
9583+ event,
9584+ downstream_counterparty_and_funding_outpoint,
95409585 } => {
95419586 self.pending_events.lock().unwrap().push_back((event, None));
95429587 if let Some(unblocked) = downstream_counterparty_and_funding_outpoint {
@@ -9548,7 +9593,9 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
95489593 }
95499594 },
95509595 MonitorUpdateCompletionAction::FreeOtherChannelImmediately {
9551- downstream_counterparty_node_id, downstream_channel_id, blocking_action,
9596+ downstream_counterparty_node_id,
9597+ downstream_channel_id,
9598+ blocking_action,
95529599 } => {
95539600 self.handle_monitor_update_release(
95549601 downstream_counterparty_node_id,
0 commit comments