Use hints with getaddrinfo() in std::net::lokup_host()
When resolving a hostname, pass a hints struct where ai_socktype is set to SOCK_STREAM in order to eliminate repeated results for each protocol family.
This commit is contained in:
parent
4114b68eba
commit
0314d179aa
|
@ -152,9 +152,19 @@ pub fn lookup_host(host: &str) -> io::Result<LookupHost> {
|
|||
init();
|
||||
|
||||
let c_host = CString::new(host)?;
|
||||
let hints = c::addrinfo {
|
||||
ai_flags: 0,
|
||||
ai_family: 0,
|
||||
ai_socktype: c::SOCK_STREAM,
|
||||
ai_protocol: 0,
|
||||
ai_addrlen: 0,
|
||||
ai_addr: ptr::null_mut(),
|
||||
ai_canonname: ptr::null_mut(),
|
||||
ai_next: ptr::null_mut()
|
||||
};
|
||||
let mut res = ptr::null_mut();
|
||||
unsafe {
|
||||
cvt_gai(c::getaddrinfo(c_host.as_ptr(), ptr::null(), ptr::null(),
|
||||
cvt_gai(c::getaddrinfo(c_host.as_ptr(), ptr::null(), &hints,
|
||||
&mut res))?;
|
||||
Ok(LookupHost { original: res, cur: res })
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue