Skip to content

Commit 13e60da

Browse files
When processing pending htlcs, abandon outbounds that are not retryable
1 parent 82e0880 commit 13e60da

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

lightning/src/ln/outbound_payment.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,21 @@ impl OutboundPayments {
536536
}
537537
} else { break }
538538
}
539+
540+
let mut outbounds = self.pending_outbound_payments.lock().unwrap();
541+
outbounds.retain(|pmt_id, pmt| {
542+
let mut retain = true;
543+
if !pmt.is_auto_retryable_now() && pmt.remaining_parts() == 0 {
544+
if pmt.mark_abandoned().is_ok() {
545+
pending_events.lock().unwrap().push(events::Event::PaymentFailed {
546+
payment_id: *pmt_id,
547+
payment_hash: pmt.payment_hash().expect("PendingOutboundPayments::Retryable always has a payment hash set"),
548+
});
549+
retain = false;
550+
}
551+
}
552+
retain
553+
});
539554
}
540555

541556
/// Will return `Ok(())` iff at least one HTLC is sent for the payment.

lightning/src/ln/payment_tests.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,7 +1729,6 @@ fn do_automatic_retries(test: AutoRetry) {
17291729
let mut msg_events = nodes[0].node.get_and_clear_pending_msg_events();
17301730
assert_eq!(msg_events.len(), 0);
17311731

1732-
nodes[0].node.abandon_payment(PaymentId(payment_hash.0));
17331732
let mut events = nodes[0].node.get_and_clear_pending_events();
17341733
assert_eq!(events.len(), 1);
17351734
match events[0] {
@@ -1764,7 +1763,6 @@ fn do_automatic_retries(test: AutoRetry) {
17641763
let mut msg_events = nodes[0].node.get_and_clear_pending_msg_events();
17651764
assert_eq!(msg_events.len(), 0);
17661765

1767-
nodes[0].node.abandon_payment(PaymentId(payment_hash.0));
17681766
let mut events = nodes[0].node.get_and_clear_pending_events();
17691767
assert_eq!(events.len(), 1);
17701768
match events[0] {

0 commit comments

Comments
 (0)