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
This is the test from rust source repository.
It says, the test fails on openbsd and bitrig, but it also fails on macOS.
I guess the reason is this:
194.168.4.100is an IP address of DNS of my ISP.So for some reason, macOS decides to resolve string
1200::AB00:1234::2552:7777:1313using DNS, and on certain ISP this resolution success.I think rust should either: