From 6836d6112799bb52f9be9f6aaffd47153010316d Mon Sep 17 00:00:00 2001 From: Luna Yao <40349250+ZnqbuZ@users.noreply.github.com> Date: Wed, 18 Feb 2026 18:52:58 +0100 Subject: [PATCH] utils: add a parse function for DNS name --- easytier/src/dns/utils.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/easytier/src/dns/utils.rs b/easytier/src/dns/utils.rs index 192d7121..908c656b 100644 --- a/easytier/src/dns/utils.rs +++ b/easytier/src/dns/utils.rs @@ -6,6 +6,7 @@ use serde_with::{DeserializeFromStr, SerializeDisplay}; use std::fmt::{Display, Formatter}; use std::net::{IpAddr, SocketAddr}; use std::str::FromStr; +use hickory_proto::rr::LowerName; use url::Url; pub fn sanitize(name: &str) -> String { @@ -34,6 +35,16 @@ pub fn sanitize(name: &str) -> String { name } +pub fn parse(name: &str) -> LowerName { + if let Ok(name) = name.parse() { + name + } else { + let sanitized = sanitize(&name); + tracing::debug!("invalid hostname: {}, sanitized to: {}", name, sanitized); + sanitized.parse().unwrap_or_default() + } +} + static DNS_SUPPORTED_PROTOCOLS: [Protocol; 2] = [ Protocol::Udp, Protocol::Tcp,