diff options
author | Russ Cox <rsc@golang.org> | 2009-11-10 17:09:33 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-11-10 17:09:33 -0800 |
commit | ac623a2f5cc99d733d26200901d97f60d4200ac9 (patch) | |
tree | 3253b07137d097cb0c7b66c13a83cac97f6867fd /src | |
parent | 58451d1264779ad1585f0d4d2c3abe30f91136e4 (diff) | |
download | golang-ac623a2f5cc99d733d26200901d97f60d4200ac9.tar.gz |
net: fix dns bug reported on irc.
if suffixes don't work, check for name directly.
also fixes short names like bit.ly when ndots>1.
tested by tossing domain and search lines from /etc/resolv.conf
Fixes issue 2.
R=agl, agl1
CC=golang-dev
http://codereview.appspot.com/152048
Diffstat (limited to 'src')
-rw-r--r-- | src/pkg/net/dnsclient.go | 11 | ||||
-rw-r--r-- | src/pkg/net/net_test.go | 2 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/pkg/net/dnsclient.go b/src/pkg/net/dnsclient.go index bea31c3ce..064e1017b 100644 --- a/src/pkg/net/dnsclient.go +++ b/src/pkg/net/dnsclient.go @@ -268,5 +268,16 @@ func LookupHost(name string) (cname string, addrs []string, err os.Error) { return; } } + + // Last ditch effort: try unsuffixed. + rname := name; + if !rooted { + rname += "." + } + addrs, err = tryOneName(cfg, rname); + if err == nil { + cname = rname; + return; + } return; } diff --git a/src/pkg/net/net_test.go b/src/pkg/net/net_test.go index 532a62b98..c06a05b3e 100644 --- a/src/pkg/net/net_test.go +++ b/src/pkg/net/net_test.go @@ -35,7 +35,7 @@ var dialErrorTests = []DialErrorTest{ }, DialErrorTest{ "tcp", "", "no-such-name:80", - `dial tcp no-such-name:80: lookup no-such-name\..*\.( on .*)?: no (.*)`, + `dial tcp no-such-name:80: lookup no-such-name\.(.*\.)?( on .*)?: no (.*)`, }, DialErrorTest{ "tcp", "", "mh/astro/r70:http", |