diff options
author | Michael Stapelberg <stapelberg@debian.org> | 2013-03-04 21:27:36 +0100 |
---|---|---|
committer | Michael Stapelberg <michael@stapelberg.de> | 2013-03-04 21:27:36 +0100 |
commit | 04b08da9af0c450d645ab7389d1467308cfc2db8 (patch) | |
tree | db247935fa4f2f94408edc3acd5d0d4f997aa0d8 /src/pkg/net/dnsclient_unix.go | |
parent | 917c5fb8ec48e22459d77e3849e6d388f93d3260 (diff) | |
download | golang-upstream/1.1_hg20130304.tar.gz |
Imported Upstream version 1.1~hg20130304upstream/1.1_hg20130304
Diffstat (limited to 'src/pkg/net/dnsclient_unix.go')
-rw-r--r-- | src/pkg/net/dnsclient_unix.go | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/src/pkg/net/dnsclient_unix.go b/src/pkg/net/dnsclient_unix.go index 18c39360e..9e21bb4a0 100644 --- a/src/pkg/net/dnsclient_unix.go +++ b/src/pkg/net/dnsclient_unix.go @@ -237,24 +237,30 @@ func goLookupIP(name string) (addrs []IP, err error) { } var records []dnsRR var cname string - cname, records, err = lookup(name, dnsTypeA) - if err != nil { - return - } + var err4, err6 error + cname, records, err4 = lookup(name, dnsTypeA) addrs = convertRR_A(records) if cname != "" { name = cname } - _, records, err = lookup(name, dnsTypeAAAA) - if err != nil && len(addrs) > 0 { - // Ignore error because A lookup succeeded. - err = nil + _, records, err6 = lookup(name, dnsTypeAAAA) + if err4 != nil && err6 == nil { + // Ignore A error because AAAA lookup succeeded. + err4 = nil } - if err != nil { - return + if err6 != nil && len(addrs) > 0 { + // Ignore AAAA error because A lookup succeeded. + err6 = nil } + if err4 != nil { + return nil, err4 + } + if err6 != nil { + return nil, err6 + } + addrs = append(addrs, convertRR_AAAA(records)...) - return + return addrs, nil } // goLookupCNAME is the native Go implementation of LookupCNAME. |