• Russ Cox's avatar
    undo CL 4557058 / b4c2ffae7034 · 16dbf218
    Russ Cox authored
    Using the getaddrinfo order is only okay if we
    are smart enough to try multiple addresses in Dial.
    Since the code does not do that, we must make
    the right first choice, regardless of what getaddrinfo
    does, and more often that not that means using the
    IPv4 address, even on IPv6 systems.  With the CL
    applied, gotest fails in package net on OS X.
    
    helix.cam=; gotest
    ...
    --- FAIL: net.TestDialGoogleIPv4 (1.05 seconds)
            -- 74.125.226.179:80 --
            -- www.google.com:80 --
            Dial("tcp", "", "www.google.com:80") = _, dial tcp [2001:4860:800f::69]:80: address family not supported by protocol family
            -- 74.125.226.179:http --
            -- www.google.com:http --
            Dial("tcp", "", "www.google.com:http") = _, dial tcp [2001:4860:800f::69]:80: address family not supported by protocol family
            -- 074.125.226.179:0080 --
            -- [::ffff:74.125.226.179]:80 --
            -- [::ffff:4a7d:e2b3]:80 --
            -- [0:0:0:0:0000:ffff:74.125.226.179]:80 --
            -- [0:0:0:0:000000:ffff:74.125.226.179]:80 --
            -- [0:0:0:0:0:ffff::74.125.226.179]:80 --
    FAIL
    gotest: "./6.out" failed: exit status 1
    
    ««« original CL description
    net: name-based destination address selection
    
    getaddrinfo() orders the addresses according to RFC 3484.
    
    This means when IPv6 is working on a host we get results like:
        []string = {"2001:4810::110", "66.117.47.214"}
    
    and when it's not working we get:
        []string = {"66.117.47.214", "2001:4810::110"}
    
    thus can drop firstFavoriteAddr.
    
    This also means /etc/gai.conf works on relevant systems.
    
    R=rsc, mikioh.mikioh
    CC=golang-dev
    https://golang.org/cl/4557058
    
    »»»
    
    R=golang-dev, bradfitz
    CC=golang-dev
    https://golang.org/cl/4532101
    16dbf218
Name
Last commit
Last update
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...