@@ -664,11 +664,11 @@ impl OutboundPayments {
664664 }
665665
666666 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) => {
668668 if $payment. get_mut( ) . mark_abandoned( ) . is_ok( ) && $payment. get( ) . remaining_parts( ) == 0 {
669669 $pending_events. lock( ) . unwrap( ) . push( events:: Event :: PaymentFailed {
670670 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,
672672 } ) ;
673673 $payment. remove( ) ;
674674 }
@@ -678,14 +678,15 @@ impl OutboundPayments {
678678 let mut outbounds = self . pending_outbound_payments . lock ( ) . unwrap ( ) ;
679679 match outbounds. entry ( payment_id) {
680680 hash_map:: Entry :: Occupied ( mut payment) => {
681- let res = match payment. get_mut ( ) {
681+ let res = match payment. get ( ) {
682682 PendingOutboundPayment :: Retryable {
683683 total_msat, payment_hash, keysend_preimage, payment_secret, pending_amt_msat, ..
684684 } => {
685685 let retry_amt_msat: u64 = route. paths . iter ( ) . map ( |path| path. last ( ) . unwrap ( ) . fee_msat ) . sum ( ) ;
686686 if retry_amt_msat + * pending_amt_msat > * total_msat * ( 100 + RETRY_OVERFLOW_PERCENTAGE ) / 100 {
687687 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) ;
689690 return
690691 }
691692 ( * total_msat, * payment_hash, * payment_secret, * keysend_preimage)
@@ -705,7 +706,7 @@ impl OutboundPayments {
705706 } ;
706707 if !payment. get ( ) . is_retryable_now ( ) {
707708 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) ;
709710 return
710711 }
711712 payment. get_mut ( ) . increment_attempts ( ) ;
0 commit comments