Skip to content

Commit 521a72b

Browse files
committed
f - Limit additional branching
1 parent 009f952 commit 521a72b

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

lightning/src/routing/scoring.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -669,22 +669,26 @@ impl<L: Deref<Target = u64>, T: Time, U: Deref<Target = T>> DirectedChannelLiqui
669669
/// Returns a penalty for routing the given HTLC `amount_msat` through the channel in this
670670
/// direction.
671671
fn penalty_msat(&self, amount_msat: u64, liquidity_penalty_multiplier_msat: u64) -> u64 {
672+
let max_penalty_msat = liquidity_penalty_multiplier_msat.saturating_mul(2);
672673
let max_liquidity_msat = self.max_liquidity_msat();
673674
let min_liquidity_msat = core::cmp::min(self.min_liquidity_msat(), max_liquidity_msat);
674675
if amount_msat <= min_liquidity_msat {
675676
0
676-
} else if amount_msat > max_liquidity_msat {
677-
u64::max_value()
678-
} else if amount_msat == max_liquidity_msat && max_liquidity_msat != self.capacity_msat {
679-
// Avoid using the failed channel on retry.
680-
u64::max_value()
677+
} else if amount_msat >= max_liquidity_msat {
678+
if amount_msat > max_liquidity_msat {
679+
u64::max_value()
680+
} else if max_liquidity_msat != self.capacity_msat {
681+
// Avoid using the failed channel on retry.
682+
u64::max_value()
683+
} else {
684+
max_penalty_msat
685+
}
681686
} else {
682687
let numerator = (max_liquidity_msat - amount_msat).saturating_add(1);
683688
let denominator = (max_liquidity_msat - min_liquidity_msat).saturating_add(1);
684689
let penalty_msat = approx::negative_log10_times_1024(numerator, denominator)
685690
.saturating_mul(liquidity_penalty_multiplier_msat) / 1024;
686691
// Upper bound the penalty to ensure some channel is selected.
687-
let max_penalty_msat = liquidity_penalty_multiplier_msat.saturating_mul(2);
688692
penalty_msat.min(max_penalty_msat)
689693
}
690694
}

0 commit comments

Comments
 (0)