@@ -1182,16 +1182,12 @@ impl OutboundPayments {
1182
1182
is_retryable_now = false ;
1183
1183
}
1184
1184
if payment. get ( ) . remaining_parts ( ) == 0 {
1185
- if payment. get ( ) . abandoned ( ) {
1185
+ if let PendingOutboundPayment :: Abandoned { payment_hash , reason , .. } = payment. get ( ) {
1186
1186
if !payment_is_probe {
1187
1187
full_failure_ev = Some ( events:: Event :: PaymentFailed {
1188
1188
payment_id : * payment_id,
1189
- payment_hash : payment. get ( ) . payment_hash ( ) . expect ( "PendingOutboundPayments::RetriesExceeded always has a payment hash set" ) ,
1190
- reason : Some ( if payment_retryable {
1191
- PaymentFailureReason :: RetriesExhausted
1192
- } else {
1193
- PaymentFailureReason :: RecipientRejected
1194
- } ) ,
1189
+ payment_hash : * payment_hash,
1190
+ reason : * reason,
1195
1191
} ) ;
1196
1192
}
1197
1193
payment. remove ( ) ;
@@ -1253,12 +1249,15 @@ impl OutboundPayments {
1253
1249
) {
1254
1250
let mut outbounds = self . pending_outbound_payments . lock ( ) . unwrap ( ) ;
1255
1251
if let hash_map:: Entry :: Occupied ( mut payment) = outbounds. entry ( payment_id) {
1256
- if let Ok ( ( ) ) = payment. get_mut ( ) . mark_abandoned ( reason) {
1252
+ if !payment. get ( ) . abandoned ( ) {
1253
+ payment. get_mut ( ) . mark_abandoned ( reason) ;
1254
+ }
1255
+ if let PendingOutboundPayment :: Abandoned { payment_hash, reason, .. } = payment. get ( ) {
1257
1256
if payment. get ( ) . remaining_parts ( ) == 0 {
1258
1257
pending_events. lock ( ) . unwrap ( ) . push ( events:: Event :: PaymentFailed {
1259
1258
payment_id,
1260
- payment_hash : payment . get ( ) . payment_hash ( ) . expect ( "PendingOutboundPayments::RetriesExceeded always has a payment hash set" ) ,
1261
- reason : Some ( reason) ,
1259
+ payment_hash : * payment_hash,
1260
+ reason : * reason,
1262
1261
} ) ;
1263
1262
payment. remove ( ) ;
1264
1263
}
0 commit comments