From c6fc3a7fc9e2f0d9af1cef741109c7910d3ae2d7 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Wed, 14 Oct 2026 01:23:51 +0700 Subject: [PATCH] fix(reflectors): retain responsive peers on partial reselection --- src/reflector_selector.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/reflector_selector.rs b/src/reflector_selector.rs index 5078218..3cbbc89 100644 --- a/src/reflector_selector.rs +++ b/src/reflector_selector.rs @@ -252,17 +252,21 @@ impl ReflectorSelector { candidates.swap(i, j); } - if (candidates.len() as u8) < num_reflectors { - info!( - "Only {} usable reflectors, retaining current set of {}", - candidates.len(), - num_reflectors - ); + if candidates.is_empty() { + info!("No usable reflectors, retaining current set"); self.reflector_tx.send(current_peers.clone())?; *reflectors_peers = current_peers; continue; } + if (candidates.len() as u8) < num_reflectors { + info!( + "Only {} usable reflectors, selecting available candidates", + candidates.len() + ); + } + let num_reflectors = num_reflectors.min(candidates.len() as u8); + let mut new_peers = Vec::new(); for i in 0..num_reflectors { let peer = candidates[i as usize].0;