4
0
Эх сурвалжийг харах

looks up the system default ipv4 nameserver on Windows

huangnauh 4 жил өмнө
parent
commit
8238e217c7
1 өөрчлөгдсөн 10 нэмэгдсэн , 19 устгасан
  1. 10 19
      src/resolve.rs

+ 10 - 19
src/resolve.rs

@@ -75,26 +75,17 @@ fn system_nameservers() -> io::Result<Option<Nameserver>> {
         }
     };
 
-    let first_adapter = match adapters.first() {
-        Some(a) => a,
-        None => {
-            warn!("No network adapters available");
-            return Ok(None);
-        }
-    };
-    debug!("Found network adapter {:?}", first_adapter.adapter_name());
-
-    let first_nameserver = match first_adapter.dns_servers().first() {
-        Some(ns) => ns,
-        None => {
-            warn!("No nameservers available");
-            return Ok(None);
-        }
-    };
-    debug!("Found nameserver {:?}", first_nameserver);
+    for dns_server in adapters
+        .iter()
+        .flat_map(|adapter| adapter.dns_servers().iter()) {
+            if dns_server.is_ipv4() {
+                debug!("Found first nameserver {:?}", dns_server);
+                return Ok(Some(dns_server.to_string()))
+            }
+    }
 
-    // todo: have this not be turned into a string, then parsed again later
-    Ok(Some(first_nameserver.to_string()))
+    warn!("No nameservers available");
+    return Ok(None)
 }