From ef416ef60bef5c4f71b056bc92ecc317da3f231c Mon Sep 17 00:00:00 2001 From: Aiden McClelland <3732071+dr-bonez@users.noreply.github.com> Date: Thu, 22 Jun 2023 12:09:59 -0600 Subject: [PATCH] prevent tor from spinning if a service is in a crash loop (#2316) --- backend/src/net/tor.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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 {