Commit Diff


commit - 769cb642185672c6028e5169628823cbdffcf718
commit + 2cf560f78905b6f035e5eb06dfeae712d2346370
blob - 2fc3d81c052cdd71654d2331332cc56324071134
blob + e55aa8a276f7a4c279a5310bf10554ce5838b9b0
--- cmd/recursor/recursor_test.go
+++ cmd/recursor/recursor_test.go
@@ -117,3 +117,30 @@ func TestNXDomain(t *testing.T) {
 	}
 	t.Logf("wanted: %+v got %+v", wanted, got)
 }
+
+func TestRefused(t *testing.T) {
+	var wanted, got dnsmessage.Message
+	var err error
+	wanted, err = dns.Exchange(tquery, quad9)
+	if err != nil {
+		fmt.Fprintf(os.Stderr, "skipping %s: %v\n", t.Name(), err)
+		t.Skip("query internet DNS:", err)
+	}
+	q := tquery
+	q.Questions[0].Name = dnsmessage.MustNewName("kjyq.com.")
+	wanted, err = dns.Exchange(q, "8.8.4.4:domain")
+	if err != nil {
+		t.Fatal(err)
+	}
+	// try twice: first for fresh response, second for cached response
+	for i := 0; i <= 1; i++ {
+		got, err = dns.Exchange(q, testAddr)
+		if err != nil {
+			t.Fatal(err)
+		}
+		if wanted.Header != got.Header {
+			t.Error("mismatched headers")
+		}
+	}
+	t.Logf("wanted: %+v got %+v", wanted, got)
+}