@@ -664,11 +664,11 @@ impl OutboundPayments {
664
664
}
665
665
666
666
macro_rules! abandon_with_entry {
667
- ( $payment_id: expr, $payment: expr, $pending_events: expr) => {
667
+ ( $payment_id: expr, $payment_hash : expr , $ payment: expr, $pending_events: expr) => {
668
668
if $payment. get_mut( ) . mark_abandoned( ) . is_ok( ) && $payment. get( ) . remaining_parts( ) == 0 {
669
669
$pending_events. lock( ) . unwrap( ) . push( events:: Event :: PaymentFailed {
670
670
payment_id: $payment_id,
671
- payment_hash: $payment . get ( ) . payment_hash( ) . expect ( "PendingOutboundPayments::RetriesExceeded always has a payment hash set" ) ,
671
+ payment_hash: $payment_hash,
672
672
} ) ;
673
673
$payment. remove( ) ;
674
674
}
@@ -678,14 +678,15 @@ impl OutboundPayments {
678
678
let mut outbounds = self . pending_outbound_payments . lock ( ) . unwrap ( ) ;
679
679
match outbounds. entry ( payment_id) {
680
680
hash_map:: Entry :: Occupied ( mut payment) => {
681
- let res = match payment. get_mut ( ) {
681
+ let res = match payment. get ( ) {
682
682
PendingOutboundPayment :: Retryable {
683
683
total_msat, payment_hash, keysend_preimage, payment_secret, pending_amt_msat, ..
684
684
} => {
685
685
let retry_amt_msat: u64 = route. paths . iter ( ) . map ( |path| path. last ( ) . unwrap ( ) . fee_msat ) . sum ( ) ;
686
686
if retry_amt_msat + * pending_amt_msat > * total_msat * ( 100 + RETRY_OVERFLOW_PERCENTAGE ) / 100 {
687
687
log_error ! ( logger, "retry_amt_msat of {} will put pending_amt_msat (currently: {}) more than 10% over total_payment_amt_msat of {}" , retry_amt_msat, pending_amt_msat, total_msat) ;
688
- abandon_with_entry ! ( payment_id, payment, pending_events) ;
688
+ let payment_hash = * payment_hash;
689
+ abandon_with_entry ! ( payment_id, payment_hash, payment, pending_events) ;
689
690
return
690
691
}
691
692
( * total_msat, * payment_hash, * payment_secret, * keysend_preimage)
@@ -705,7 +706,7 @@ impl OutboundPayments {
705
706
} ;
706
707
if !payment. get ( ) . is_retryable_now ( ) {
707
708
log_error ! ( logger, "Retries exhausted for payment id {}" , log_bytes!( payment_id. 0 ) ) ;
708
- abandon_with_entry ! ( payment_id, payment, pending_events) ;
709
+ abandon_with_entry ! ( payment_id, res . 1 , payment, pending_events) ;
709
710
return
710
711
}
711
712
payment. get_mut ( ) . increment_attempts ( ) ;
0 commit comments