Closed
Description
This is the test from rust source repository.
// FIXME: figure out why this fails on openbsd and bitrig and fix it
#[test]
#[cfg(not(any(windows, target_os = "openbsd", target_os = "bitrig")))]
fn to_socket_addr_str_bad() {
assert!(tsa("1200::AB00:1234::2552:7777:1313:34300").is_err());
}
It says, the test fails on openbsd and bitrig, but it also fails on macOS.
let a: Vec<_> = "1200::AB00:1234::2552:7777:1313:34300"
.to_socket_addrs().unwrap().collect();
println!("{:?}", a); // prints [V4(92.242.132.24:34300)]
I guess the reason is this:
% host random::junk
random::junk has address 92.242.132.24
Host random::junk not found: 3(NXDOMAIN)
% dig random::junk
; <<>> DiG 9.10.6 <<>> random::junk
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 581
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;random::junk. IN A
;; ANSWER SECTION:
random::junk. 0 IN A 92.242.132.24
;; Query time: 30 msec
;; SERVER: 194.168.4.100#53(194.168.4.100)
;; WHEN: Wed Sep 05 04:07:34 BST 2018
;; MSG SIZE rcvd: 57
194.168.4.100
is an IP address of DNS of my ISP.
So for some reason, macOS decides to resolve string 1200::AB00:1234::2552:7777:1313
using DNS, and on certain ISP this resolution success.
I think rust should either:
- disable this test on macOS as well
- or explicitly check if hostname contains a colon, immediately fail without passing the string to libc resolver