From 56247469149d30438f1eafa0d406533a99435c1b Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Wed, 14 Oct 2026 11:32:38 +0700 Subject: [PATCH] fix(ratecontroller): account for configured and partial reflector sets Cap the required delta count at the active peer count using advanced_settings.num_reflectors. Keep requesting reselection when the active set is empty so recovery remains possible. --- src/ratecontroller.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ratecontroller.rs b/src/ratecontroller.rs index 230ba81..b099177 100644 --- a/src/ratecontroller.rs +++ b/src/ratecontroller.rs @@ -491,12 +491,18 @@ impl Ratecontroller { self.state_dl.deltas = down_deltas; self.state_ul.deltas = up_deltas; - if self.state_dl.deltas.len() < 5 || self.state_ul.deltas.len() < 5 { + let minimum = + usize::from(self.settings.advanced_settings.num_reflectors).min(reflectors.len()); + if reflectors.is_empty() + || self.state_dl.deltas.len() < minimum + || self.state_ul.deltas.len() < minimum + { // trigger reselection warn!( - "Not enough delta values (D: {}, U: {}, need 5), triggering reselection", + "Not enough delta values (D: {}, U: {}, need {}), triggering reselection", self.state_dl.deltas.len(), - self.state_ul.deltas.len() + self.state_ul.deltas.len(), + minimum ); let _ = self.reselect_trigger.try_send(true); }