On 2016-11-29 1:17 AM, Santiago Vila wrote: > I wonder, however, why two lines like this in /etc/hosts > > 127.0.0.1 localhost > 127.0.0.1 localhost ip6-localhost ip6-loopback > > should make rustc build to fail at all.
The test was added in https://github.com/rust-lang/rust/pull/34700 to guard against regression of a bug where std::net::lookup_host() incorrectly returned multiple copies of each address. The /etc/hosts database format certainly allows duplicate entries. It seems that glibc, at least, does not merge those, but instead returns the listed n-to-m mappings directly through the `struct hostent` returned by both gethostbyaddr() and gethostbyname(). Even if it doesn't violate any spec, I agree with Luca that this is a misconfiguration. The normal application of multiple address entries is for service failover. Any client connecting to localhost with your configuration will immediately retry connection failures, which is a waste of resources. More practically, I don't see a way to make the test work in your environment without implementing a separate /etc/hosts parser. I think that would be a lot of code to justify in this case. -r

