]> git.lizzy.rs Git - rust.git/blobdiff - src/libstd/sys/common/net.rs
Ignore unknown address types when looking up hosts
[rust.git] / src / libstd / sys / common / net.rs
index 54b9b466c42240b7f8dab99bb962af50f4e1e553..3e2a0a8f39a8f303fbf10dce9e0110c1f0b6836f 100644 (file)
@@ -119,14 +119,18 @@ pub struct LookupHost {
 }
 
 impl Iterator for LookupHost {
-    type Item = io::Result<SocketAddr>;
-    fn next(&mut self) -> Option<io::Result<SocketAddr>> {
+    type Item = SocketAddr;
+    fn next(&mut self) -> Option<SocketAddr> {
+        let result;
         unsafe {
             if self.cur.is_null() { return None }
-            let ret = sockaddr_to_addr(mem::transmute((*self.cur).ai_addr),
-                                       (*self.cur).ai_addrlen as usize);
+            result = sockaddr_to_addr(mem::transmute((*self.cur).ai_addr),
+                                      (*self.cur).ai_addrlen as usize).ok();
             self.cur = (*self.cur).ai_next as *mut c::addrinfo;
-            Some(ret)
+        }
+        match result {
+            Some(r) => Some(r),
+            None => self.next(),
         }
     }
 }