File tree Expand file tree Collapse file tree 1 file changed +14
-10
lines changed Expand file tree Collapse file tree 1 file changed +14
-10
lines changed Original file line number Diff line number Diff line change @@ -121,16 +121,20 @@ pub struct LookupHost {
121121impl Iterator for LookupHost {
122122 type Item = SocketAddr ;
123123 fn next ( & mut self ) -> Option < SocketAddr > {
124- let result;
125- unsafe {
126- if self . cur . is_null ( ) { return None }
127- result = sockaddr_to_addr ( mem:: transmute ( ( * self . cur ) . ai_addr ) ,
128- ( * self . cur ) . ai_addrlen as usize ) . ok ( ) ;
129- self . cur = ( * self . cur ) . ai_next as * mut c:: addrinfo ;
130- }
131- match result {
132- Some ( r) => Some ( r) ,
133- None => self . next ( ) ,
124+ loop {
125+ unsafe {
126+ let cur = match self . cur . as_ref ( ) {
127+ None => return None ,
128+ Some ( c) => c,
129+ } ;
130+ self . cur = cur. ai_next ;
131+ match sockaddr_to_addr ( mem:: transmute ( cur. ai_addr ) ,
132+ cur. ai_addrlen as usize )
133+ {
134+ Ok ( addr) => return Some ( addr) ,
135+ Err ( _) => continue ,
136+ }
137+ }
134138 }
135139 }
136140}
You can’t perform that action at this time.
0 commit comments