From a190aed88afabb9a9f2c946792f38b9f661e9a64 Mon Sep 17 00:00:00 2001 From: Jeffrey Czyz Date: Tue, 17 May 2022 16:43:36 -0500 Subject: [PATCH] Use the correct amount when scoring route hints When scoring route hints, the amount passed to the scorer should include any fees needed for subsequent hops. This worked correctly for single- hop hints since there are no further hops, but not for multi-hint hops (except the final one). --- lightning/src/routing/router.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lightning/src/routing/router.rs b/lightning/src/routing/router.rs index 13cd82f7f..7536011d0 100644 --- a/lightning/src/routing/router.rs +++ b/lightning/src/routing/router.rs @@ -1295,10 +1295,10 @@ where L::Target: Logger { short_channel_id: hop.short_channel_id, }) .unwrap_or_else(|| CandidateRouteHop::PrivateHop { hint: hop }); + let amount_to_transfer_msat = final_value_msat + aggregate_next_hops_fee_msat; let capacity_msat = candidate.effective_capacity().as_msat(); aggregate_next_hops_path_penalty_msat = aggregate_next_hops_path_penalty_msat - .saturating_add(scorer.channel_penalty_msat(hop.short_channel_id, - final_value_msat, capacity_msat, &source, &target)); + .saturating_add(scorer.channel_penalty_msat(hop.short_channel_id, amount_to_transfer_msat, capacity_msat, &source, &target)); aggregate_next_hops_cltv_delta = aggregate_next_hops_cltv_delta .saturating_add(hop.cltv_expiry_delta as u32); -- 2.39.5