diff --git a/src/header/netdb/redox.rs b/src/header/netdb/redox.rs index 314dffcd..6e24ebed 100644 --- a/src/header/netdb/redox.rs +++ b/src/header/netdb/redox.rs @@ -7,6 +7,25 @@ use crate::{ use alloc::string::String; pub fn get_dns_server() -> Result { + // Try the cached daemon path first + if let Ok(first_ns) = (|| -> Result { + let mut s = String::new(); + let mut file = File::open(c"/scheme/dns/nameservers".into(), fcntl::O_RDONLY)?; + file.read_to_string(&mut s) + .map_err(|_| Errno(errno::EIO).sync())?; + // Take the first nameserver line + if let Some(first) = s.lines().next() { + let trimmed = first.trim(); + if !trimmed.is_empty() { + return Ok(trimmed.to_string()); + } + } + Err(Errno(errno::ENOENT).sync()) + })() { + return Ok(first_ns); + } + + // Fallback: read the static /etc/net/dns file (legacy path) let mut string = String::new(); let mut file = File::open(c"/etc/net/dns".into(), fcntl::O_RDONLY)?; file.read_to_string(&mut string)