diff --git a/backend/src/net/tor.rs b/backend/src/net/tor.rs index c16058cdf..70125ad29 100644 --- a/backend/src/net/tor.rs +++ b/backend/src/net/tor.rs @@ -416,8 +416,8 @@ async fn torctl( ) .await?; - for (key, service) in &*services { - let key = TorSecretKeyV3::from(*key); + for (key, service) in std::mem::take(services) { + let key = TorSecretKeyV3::from(key); let bindings = service .iter() .flat_map(|(ext, int)| { @@ -426,9 +426,12 @@ async fn torctl( .map(|(addr, _)| (*ext, SocketAddr::from(*addr))) }) .collect::>(); - connection - .add_onion_v3(&key, false, false, false, None, &mut bindings.iter()) - .await?; + if !bindings.is_empty() { + services.insert(key.as_bytes(), service); + connection + .add_onion_v3(&key, false, false, false, None, &mut bindings.iter()) + .await?; + } } let handler = async {