@@ -2392,6 +2392,8 @@ where L::Target: Logger {
2392
2392
// if the amount being transferred over this path is lower.
2393
2393
// We do this for now, but this is a subject for removal.
2394
2394
if let Some ( mut available_value_contribution_msat) = htlc_maximum_msat. checked_sub( $next_hops_fee_msat) {
2395
+ let cltv_expiry_delta = $candidate. cltv_expiry_delta( ) ;
2396
+ let htlc_minimum_msat = $candidate. htlc_minimum_msat( ) ;
2395
2397
let used_liquidity_msat = used_liquidities
2396
2398
. get( & $candidate. id( ) )
2397
2399
. map_or( 0 , |used_liquidity_msat| {
@@ -2415,7 +2417,7 @@ where L::Target: Logger {
2415
2417
. checked_sub( 2 * MEDIAN_HOP_CLTV_EXPIRY_DELTA )
2416
2418
. unwrap_or( payment_params. max_total_cltv_expiry_delta - final_cltv_expiry_delta) ;
2417
2419
let hop_total_cltv_delta = ( $next_hops_cltv_delta as u32 )
2418
- . saturating_add( $candidate . cltv_expiry_delta( ) ) ;
2420
+ . saturating_add( cltv_expiry_delta) ;
2419
2421
let exceeds_cltv_delta_limit = hop_total_cltv_delta > max_total_cltv_expiry_delta;
2420
2422
2421
2423
let value_contribution_msat = cmp:: min( available_value_contribution_msat, $next_hops_value_contribution) ;
@@ -2425,7 +2427,6 @@ where L::Target: Logger {
2425
2427
// Can't overflow due to how the values were computed right above.
2426
2428
None => unreachable!( ) ,
2427
2429
} ;
2428
- let htlc_minimum_msat = $candidate. htlc_minimum_msat( ) ;
2429
2430
#[ allow( unused_comparisons) ] // $next_hops_path_htlc_minimum_msat is 0 in some calls so rustc complains
2430
2431
let over_path_minimum_msat = amount_to_transfer_over_msat >= htlc_minimum_msat &&
2431
2432
amount_to_transfer_over_msat >= $next_hops_path_htlc_minimum_msat;
@@ -2503,12 +2504,14 @@ where L::Target: Logger {
2503
2504
// payment path (upstream to the payee). To avoid that, we recompute
2504
2505
// path fees knowing the final path contribution after constructing it.
2505
2506
let curr_min = cmp:: max(
2506
- $next_hops_path_htlc_minimum_msat, $candidate . htlc_minimum_msat( )
2507
+ $next_hops_path_htlc_minimum_msat, htlc_minimum_msat
2507
2508
) ;
2508
- let path_htlc_minimum_msat = compute_fees_saturating( curr_min, $candidate. fees( ) )
2509
+ let candidate_fees = $candidate. fees( ) ;
2510
+ let src_node_counter = $candidate. src_node_counter( ) ;
2511
+ let path_htlc_minimum_msat = compute_fees_saturating( curr_min, candidate_fees)
2509
2512
. saturating_add( curr_min) ;
2510
2513
2511
- let dist_entry = & mut dist[ $candidate . src_node_counter( ) as usize ] ;
2514
+ let dist_entry = & mut dist[ src_node_counter as usize ] ;
2512
2515
let old_entry = if let Some ( hop) = dist_entry {
2513
2516
hop
2514
2517
} else {
@@ -2551,7 +2554,7 @@ where L::Target: Logger {
2551
2554
if src_node_id != our_node_id {
2552
2555
// Note that `u64::max_value` means we'll always fail the
2553
2556
// `old_entry.total_fee_msat > total_fee_msat` check below
2554
- hop_use_fee_msat = compute_fees_saturating( amount_to_transfer_over_msat, $candidate . fees ( ) ) ;
2557
+ hop_use_fee_msat = compute_fees_saturating( amount_to_transfer_over_msat, candidate_fees ) ;
2555
2558
total_fee_msat = total_fee_msat. saturating_add( hop_use_fee_msat) ;
2556
2559
}
2557
2560
0 commit comments