Skip to content

Commit c6348cb

Browse files
committed
Move max penalty cap in ProbabilisticScorer
This reduce a branch in the 0 and u6::max_value cases.
1 parent 4ea18e3 commit c6348cb

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

lightning/src/routing/scoring.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -666,20 +666,21 @@ impl<L: Deref<Target = u64>, T: Time, U: Deref<Target = T>> DirectedChannelLiqui
666666
/// Returns a penalty for routing the given HTLC `amount_msat` through the channel in this
667667
/// direction.
668668
fn penalty_msat(&self, amount_msat: u64, liquidity_penalty_multiplier_msat: u64) -> u64 {
669+
let max_penalty_msat = liquidity_penalty_multiplier_msat.saturating_mul(2);
669670
let max_liquidity_msat = self.max_liquidity_msat();
670671
let min_liquidity_msat = core::cmp::min(self.min_liquidity_msat(), max_liquidity_msat);
671672
if amount_msat > max_liquidity_msat {
672-
u64::max_value()
673+
max_penalty_msat
673674
} else if amount_msat <= min_liquidity_msat {
674675
0
675676
} else {
676677
let numerator = (max_liquidity_msat - amount_msat).saturating_add(1);
677678
let denominator = (max_liquidity_msat - min_liquidity_msat).saturating_add(1);
678-
approx::negative_log10_times_1024(numerator, denominator)
679-
.saturating_mul(liquidity_penalty_multiplier_msat) / 1024
679+
let penalty_msat = approx::negative_log10_times_1024(numerator, denominator)
680+
.saturating_mul(liquidity_penalty_multiplier_msat) / 1024;
681+
// Upper bound the penalty to ensure some channel is selected.
682+
penalty_msat.min(max_penalty_msat)
680683
}
681-
// Upper bound the penalty to ensure some channel is selected.
682-
.min(2 * liquidity_penalty_multiplier_msat)
683684
}
684685

685686
/// Returns the lower bound of the channel liquidity balance in this direction.

0 commit comments

Comments
 (0)