File tree Expand file tree Collapse file tree 2 files changed +18
-2
lines changed Expand file tree Collapse file tree 2 files changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -536,6 +536,24 @@ impl OutboundPayments {
536
536
}
537
537
} else { break }
538
538
}
539
+
540
+ let mut outbounds = self . pending_outbound_payments . lock ( ) . unwrap ( ) ;
541
+ outbounds. retain ( |pmt_id, pmt| {
542
+ let mut retain = true ;
543
+ let auto_retryable = pmt. is_auto_retryable_now ( ) ;
544
+ if let PendingOutboundPayment :: Retryable { pending_amt_msat, total_msat, .. } = pmt {
545
+ if pending_amt_msat < total_msat {
546
+ if !auto_retryable && pmt. mark_abandoned ( ) . is_ok ( ) && pmt. remaining_parts ( ) == 0 {
547
+ pending_events. lock ( ) . unwrap ( ) . push ( events:: Event :: PaymentFailed {
548
+ payment_id : * pmt_id,
549
+ payment_hash : pmt. payment_hash ( ) . expect ( "PendingOutboundPayments::Retryable always has a payment hash set" ) ,
550
+ } ) ;
551
+ retain = false ;
552
+ }
553
+ }
554
+ }
555
+ retain
556
+ } ) ;
539
557
}
540
558
541
559
/// Will return `Ok(())` iff at least one HTLC is sent for the payment.
Original file line number Diff line number Diff line change @@ -1733,7 +1733,6 @@ fn do_automatic_retries(test: AutoRetry) {
1733
1733
let mut msg_events = nodes[ 0 ] . node . get_and_clear_pending_msg_events ( ) ;
1734
1734
assert_eq ! ( msg_events. len( ) , 0 ) ;
1735
1735
1736
- nodes[ 0 ] . node . abandon_payment ( PaymentId ( payment_hash. 0 ) ) ;
1737
1736
let mut events = nodes[ 0 ] . node . get_and_clear_pending_events ( ) ;
1738
1737
assert_eq ! ( events. len( ) , 1 ) ;
1739
1738
match events[ 0 ] {
@@ -1768,7 +1767,6 @@ fn do_automatic_retries(test: AutoRetry) {
1768
1767
let mut msg_events = nodes[ 0 ] . node . get_and_clear_pending_msg_events ( ) ;
1769
1768
assert_eq ! ( msg_events. len( ) , 0 ) ;
1770
1769
1771
- nodes[ 0 ] . node . abandon_payment ( PaymentId ( payment_hash. 0 ) ) ;
1772
1770
let mut events = nodes[ 0 ] . node . get_and_clear_pending_events ( ) ;
1773
1771
assert_eq ! ( events. len( ) , 1 ) ;
1774
1772
match events[ 0 ] {
You can’t perform that action at this time.
0 commit comments