diff --git a/src/reflector_selector.rs b/src/reflector_selector.rs index 92c1227..d348003 100644 --- a/src/reflector_selector.rs +++ b/src/reflector_selector.rs @@ -167,6 +167,7 @@ impl ReflectorSelector { let mut next_peers: Vec = Vec::new(); let mut reflectors_peers = self.reflector_peers_lock.write_anyhow()?; + let current_peers = reflectors_peers.clone(); // Include all current peers for reflector in reflectors_peers.iter() { @@ -236,6 +237,13 @@ impl ReflectorSelector { candidates.swap(i, j); } + 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 { num_reflectors = candidates.len() as u8; }