File tree 1 file changed +14
-10
lines changed
1 file changed +14
-10
lines changed Original file line number Diff line number Diff line change @@ -121,16 +121,20 @@ pub struct LookupHost {
121
121
impl Iterator for LookupHost {
122
122
type Item = SocketAddr ;
123
123
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
+ }
134
138
}
135
139
}
136
140
}
You can’t perform that action at this time.
0 commit comments