From a031b6f701c68f9f496c65882ec618b2517b1f11 Mon Sep 17 00:00:00 2001 From: Luna Yao <40349250+ZnqbuZ@users.noreply.github.com> Date: Mon, 6 Apr 2026 01:01:40 +0200 Subject: [PATCH] server: rearrange method ordering --- easytier/src/dns/server.rs | 102 ++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/easytier/src/dns/server.rs b/easytier/src/dns/server.rs index 02655bf7..c9827ca2 100644 --- a/easytier/src/dns/server.rs +++ b/easytier/src/dns/server.rs @@ -115,57 +115,6 @@ impl DnsServer { self.addresses.read().iter().map(|a| a.addr).collect() } - #[instrument(skip_all)] - async fn reload_listeners( - &self, - listeners: impl IntoIterator, - runtime: &mut Option, - ) -> anyhow::Result<()> { - let listeners = listeners.into_iter().collect(); - - if *self.listeners.read() == listeners { - tracing::info!("listeners unchanged, no need to reload"); - return Ok(()); - } - tracing::info!(?listeners, "reloading"); - - if let Some(runtime) = runtime.as_ref() { - if let Some(Err(e)) = runtime.stop().await { - tracing::error!("failed to stop old DNS server runtime: {}", e); - } - } - - let runtime = runtime.get_or_insert_default(); - - let mut server = ServerFuture::new(self.catalog.clone()); - for listener in &listeners { - let addr = listener.addr; - tracing::info!(?addr, "binding listener"); - if let Err(error) = match listener.protocol { - Protocol::Udp => bind_socket(addr, None).map(|s| server.register_socket(s)), - Protocol::Tcp => bind_socket(addr, None) - .map(|s| server.register_listener(s, DNS_SERVER_LISTENER_TCP_TIMEOUT)), - _ => unimplemented!(), - } { - tracing::error!(?addr, ?error, "failed to bind listener"); - } - } - - runtime.start(Some(server.shutdown_token().clone()), |_| { - async move { - server - .block_until_done() - .await - .unwrap_or_else(|e| tracing::error!("DNS server exited with error: {:?}", e)); - } - .instrument(tracing::info_span!("DNS server backend runtime")) - }); - - *self.listeners.write() = listeners; - - Ok(()) - } - #[instrument(skip_all)] async fn reload_addresses( &self, @@ -218,6 +167,57 @@ impl DnsServer { Ok(()) } + #[instrument(skip_all)] + async fn reload_listeners( + &self, + listeners: impl IntoIterator, + runtime: &mut Option, + ) -> anyhow::Result<()> { + let listeners = listeners.into_iter().collect(); + + if *self.listeners.read() == listeners { + tracing::info!("listeners unchanged, no need to reload"); + return Ok(()); + } + tracing::info!(?listeners, "reloading"); + + if let Some(runtime) = runtime.as_ref() { + if let Some(Err(e)) = runtime.stop().await { + tracing::error!("failed to stop old DNS server runtime: {}", e); + } + } + + let runtime = runtime.get_or_insert_default(); + + let mut server = ServerFuture::new(self.catalog.clone()); + for listener in &listeners { + let addr = listener.addr; + tracing::info!(?addr, "binding listener"); + if let Err(error) = match listener.protocol { + Protocol::Udp => bind_socket(addr, None).map(|s| server.register_socket(s)), + Protocol::Tcp => bind_socket(addr, None) + .map(|s| server.register_listener(s, DNS_SERVER_LISTENER_TCP_TIMEOUT)), + _ => unimplemented!(), + } { + tracing::error!(?addr, ?error, "failed to bind listener"); + } + } + + runtime.start(Some(server.shutdown_token().clone()), |_| { + async move { + server + .block_until_done() + .await + .unwrap_or_else(|e| tracing::error!("DNS server exited with error: {:?}", e)); + } + .instrument(tracing::info_span!("DNS server backend runtime")) + }); + + *self.listeners.write() = listeners; + + Ok(()) + } + #[instrument(skip_all, name = "DnsServer main loop")] pub async fn run(&self, token: CancellationToken) { let dirty = &self.mgr.dirty;