diff options
Diffstat (limited to 'libgo/go/net/dnsclient_test.go')
-rw-r--r-- | libgo/go/net/dnsclient_test.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/libgo/go/net/dnsclient_test.go b/libgo/go/net/dnsclient_test.go index 3ab2b83..7308fb0 100644 --- a/libgo/go/net/dnsclient_test.go +++ b/libgo/go/net/dnsclient_test.go @@ -67,3 +67,51 @@ func testWeighting(t *testing.T, margin float64) { func TestWeighting(t *testing.T) { testWeighting(t, 0.05) } + +// Issue 8434: verify that Temporary returns true on an error when rcode +// is SERVFAIL +func TestIssue8434(t *testing.T) { + msg := &dnsMsg{ + dnsMsgHdr: dnsMsgHdr{ + rcode: dnsRcodeServerFailure, + }, + } + + _, _, err := answer("golang.org", "foo:53", msg, uint16(dnsTypeSRV)) + if err == nil { + t.Fatal("expected an error") + } + if ne, ok := err.(Error); !ok { + t.Fatalf("err = %#v; wanted something supporting net.Error", err) + } else if !ne.Temporary() { + t.Fatalf("Temporary = false for err = %#v; want Temporary == true", err) + } + if de, ok := err.(*DNSError); !ok { + t.Fatalf("err = %#v; wanted a *net.DNSError", err) + } else if !de.IsTemporary { + t.Fatalf("IsTemporary = false for err = %#v; want IsTemporary == true", err) + } +} + +// Issue 12778: verify that NXDOMAIN without RA bit errors as +// "no such host" and not "server misbehaving" +func TestIssue12778(t *testing.T) { + msg := &dnsMsg{ + dnsMsgHdr: dnsMsgHdr{ + rcode: dnsRcodeNameError, + recursion_available: false, + }, + } + + _, _, err := answer("golang.org", "foo:53", msg, uint16(dnsTypeSRV)) + if err == nil { + t.Fatal("expected an error") + } + de, ok := err.(*DNSError) + if !ok { + t.Fatalf("err = %#v; wanted a *net.DNSError", err) + } + if de.Err != errNoSuchHost.Error() { + t.Fatalf("Err = %#v; wanted %q", de.Err, errNoSuchHost.Error()) + } +} |