@@ -378,22 +378,23 @@ impl OutboundPayments {
378378 }
379379 }
380380
381- pub ( super ) fn send_payment < R : Deref , ES : Deref , NS : Deref , F > (
381+ pub ( super ) fn send_payment < R : Deref , ES : Deref , NS : Deref , F , L : Deref > (
382382 & self , payment_hash : PaymentHash , payment_secret : & Option < PaymentSecret > , payment_id : PaymentId ,
383383 retry_strategy : Retry , route_params : RouteParameters , router : & R ,
384384 first_hops : Vec < ChannelDetails > , inflight_htlcs : InFlightHtlcs , entropy_source : & ES ,
385- node_signer : & NS , best_block_height : u32 , send_payment_along_path : F
385+ node_signer : & NS , best_block_height : u32 , logger : & L , send_payment_along_path : F ,
386386 ) -> Result < ( ) , PaymentSendFailure >
387387 where
388388 R :: Target : Router ,
389389 ES :: Target : EntropySource ,
390390 NS :: Target : NodeSigner ,
391+ L :: Target : Logger ,
391392 F : Fn ( & Vec < RouteHop > , & Option < PaymentParameters > , & PaymentHash , & Option < PaymentSecret > , u64 ,
392393 u32 , PaymentId , & Option < PaymentPreimage > , [ u8 ; 32 ] ) -> Result < ( ) , APIError > ,
393394 {
394395 self . pay_internal ( payment_id, Some ( ( payment_hash, payment_secret, retry_strategy) ) ,
395396 route_params, router, first_hops, inflight_htlcs, entropy_source, node_signer,
396- best_block_height, & send_payment_along_path)
397+ best_block_height, logger , & send_payment_along_path)
397398 . map_err ( |e| { self . remove_outbound_if_all_failed ( payment_id, & e) ; e } )
398399 }
399400
@@ -470,24 +471,25 @@ impl OutboundPayments {
470471 }
471472 if let Some ( ( payment_id, route_params) ) = retry_id_route_params {
472473 core:: mem:: drop ( outbounds) ;
473- if let Err ( e) = self . pay_internal ( payment_id, None , route_params, router, first_hops ( ) , inflight_htlcs ( ) , entropy_source, node_signer, best_block_height, & send_payment_along_path) {
474- log_trace ! ( logger, "Errored retrying payment: {:?}" , e) ;
474+ if let Err ( e) = self . pay_internal ( payment_id, None , route_params, router, first_hops ( ) , inflight_htlcs ( ) , entropy_source, node_signer, best_block_height, logger , & send_payment_along_path) {
475+ log_info ! ( logger, "Errored retrying payment: {:?}" , e) ;
475476 }
476477 } else { break }
477478 }
478479 }
479480
480- fn pay_internal < R : Deref , NS : Deref , ES : Deref , F > (
481+ fn pay_internal < R : Deref , NS : Deref , ES : Deref , F , L : Deref > (
481482 & self , payment_id : PaymentId ,
482483 initial_send_info : Option < ( PaymentHash , & Option < PaymentSecret > , Retry ) > ,
483484 route_params : RouteParameters , router : & R , first_hops : Vec < ChannelDetails > ,
484485 inflight_htlcs : InFlightHtlcs , entropy_source : & ES , node_signer : & NS , best_block_height : u32 ,
485- send_payment_along_path : & F
486+ logger : & L , send_payment_along_path : & F ,
486487 ) -> Result < ( ) , PaymentSendFailure >
487488 where
488489 R :: Target : Router ,
489490 ES :: Target : EntropySource ,
490491 NS :: Target : NodeSigner ,
492+ L :: Target : Logger ,
491493 F : Fn ( & Vec < RouteHop > , & Option < PaymentParameters > , & PaymentHash , & Option < PaymentSecret > , u64 ,
492494 u32 , PaymentId , & Option < PaymentPreimage > , [ u8 ; 32 ] ) -> Result < ( ) , APIError >
493495 {
@@ -522,7 +524,9 @@ impl OutboundPayments {
522524 } else { return res }
523525 } else { return res }
524526 core:: mem:: drop ( outbounds) ;
525- self . pay_internal ( payment_id, None , route_params, router, first_hops, inflight_htlcs, entropy_source, node_signer, best_block_height, send_payment_along_path)
527+ let retry_res = self . pay_internal ( payment_id, None , route_params, router, first_hops, inflight_htlcs, entropy_source, node_signer, best_block_height, logger, send_payment_along_path) ;
528+ log_info ! ( logger, "Result retrying payment id {}: {:?}" , log_bytes!( payment_id. 0 ) , retry_res) ;
529+ retry_res
526530 } ,
527531 Err ( PaymentSendFailure :: PartialFailure { failed_paths_retry : Some ( retry) , results, .. } ) => {
528532 let mut outbounds = self . pending_outbound_payments . lock ( ) . unwrap ( ) ;
@@ -537,7 +541,8 @@ impl OutboundPayments {
537541 // Some paths were sent, even if we failed to send the full MPP value our recipient may
538542 // misbehave and claim the funds, at which point we have to consider the payment sent, so
539543 // return `Ok()` here, ignoring any retry errors.
540- let _ = self . pay_internal ( payment_id, None , retry, router, first_hops, inflight_htlcs, entropy_source, node_signer, best_block_height, send_payment_along_path) ;
544+ let retry_res = self . pay_internal ( payment_id, None , retry, router, first_hops, inflight_htlcs, entropy_source, node_signer, best_block_height, logger, send_payment_along_path) ;
545+ log_info ! ( logger, "Result retrying payment id {}: {:?}" , log_bytes!( payment_id. 0 ) , retry_res) ;
541546 Ok ( ( ) )
542547 } ,
543548 Err ( PaymentSendFailure :: PartialFailure { failed_paths_retry : None , .. } ) => {
@@ -1164,11 +1169,12 @@ mod tests {
11641169 let err = if on_retry {
11651170 outbound_payments. pay_internal (
11661171 PaymentId ( [ 0 ; 32 ] ) , None , expired_route_params, & & router, vec ! [ ] , InFlightHtlcs :: new ( ) ,
1167- & & keys_manager, & & keys_manager, 0 , & |_, _, _, _, _, _, _, _, _| Ok ( ( ) ) ) . unwrap_err ( )
1172+ & & keys_manager, & & keys_manager, 0 , & & logger , & |_, _, _, _, _, _, _, _, _| Ok ( ( ) ) ) . unwrap_err ( )
11681173 } else {
11691174 outbound_payments. send_payment (
11701175 PaymentHash ( [ 0 ; 32 ] ) , & None , PaymentId ( [ 0 ; 32 ] ) , Retry :: Attempts ( 0 ) , expired_route_params,
1171- & & router, vec ! [ ] , InFlightHtlcs :: new ( ) , & & keys_manager, & & keys_manager, 0 , |_, _, _, _, _, _, _, _, _| Ok ( ( ) ) ) . unwrap_err ( )
1176+ & & router, vec ! [ ] , InFlightHtlcs :: new ( ) , & & keys_manager, & & keys_manager, 0 , & & logger,
1177+ |_, _, _, _, _, _, _, _, _| Ok ( ( ) ) ) . unwrap_err ( )
11721178 } ;
11731179 if let PaymentSendFailure :: ParameterError ( APIError :: APIMisuseError { err } ) = err {
11741180 assert ! ( err. contains( "Invoice expired" ) ) ;
@@ -1205,11 +1211,12 @@ mod tests {
12051211 & & keys_manager, 0 ) . unwrap ( ) ;
12061212 outbound_payments. pay_internal (
12071213 PaymentId ( [ 0 ; 32 ] ) , None , route_params, & & router, vec ! [ ] , InFlightHtlcs :: new ( ) ,
1208- & & keys_manager, & & keys_manager, 0 , & |_, _, _, _, _, _, _, _, _| Ok ( ( ) ) ) . unwrap_err ( )
1214+ & & keys_manager, & & keys_manager, 0 , & & logger , & |_, _, _, _, _, _, _, _, _| Ok ( ( ) ) ) . unwrap_err ( )
12091215 } else {
12101216 outbound_payments. send_payment (
12111217 PaymentHash ( [ 0 ; 32 ] ) , & None , PaymentId ( [ 0 ; 32 ] ) , Retry :: Attempts ( 0 ) , route_params,
1212- & & router, vec ! [ ] , InFlightHtlcs :: new ( ) , & & keys_manager, & & keys_manager, 0 , |_, _, _, _, _, _, _, _, _| Ok ( ( ) ) ) . unwrap_err ( )
1218+ & & router, vec ! [ ] , InFlightHtlcs :: new ( ) , & & keys_manager, & & keys_manager, 0 , & & logger,
1219+ |_, _, _, _, _, _, _, _, _| Ok ( ( ) ) ) . unwrap_err ( )
12131220 } ;
12141221 if let PaymentSendFailure :: ParameterError ( APIError :: APIMisuseError { err } ) = err {
12151222 assert ! ( err. contains( "Failed to find a route" ) ) ;
0 commit comments