aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2019-12-04 23:20:10 +0700
committerShulhan <m.shulhan@gmail.com>2019-12-04 23:59:13 +0700
commiteaf16a54fcb430885578c03e4e246af14966f033 (patch)
treee2c37cb8087aae79c20d7bde670df40e31299ad6
parentce5fbf87e42d24ea95cd558150961623b9403c6e (diff)
downloadpakakeh.go-eaf16a54fcb430885578c03e4e246af14966f033.tar.xz
dns: remove the use of pointer on Message fields
-rw-r--r--lib/dns/answer.go4
-rw-r--r--lib/dns/answer_test.go26
-rw-r--r--lib/dns/answers_test.go12
-rw-r--r--lib/dns/caches.go2
-rw-r--r--lib/dns/caches_test.go20
-rw-r--r--lib/dns/dohclient_test.go80
-rw-r--r--lib/dns/dotclient_test.go30
-rw-r--r--lib/dns/example_udpclient_test.go4
-rw-r--r--lib/dns/hosts.go6
-rw-r--r--lib/dns/masterfile.go12
-rw-r--r--lib/dns/masterfile_test.go114
-rw-r--r--lib/dns/message.go47
-rw-r--r--lib/dns/message_test.go164
-rw-r--r--lib/dns/resourcerecord.go20
-rw-r--r--lib/dns/server.go32
-rw-r--r--lib/dns/tcpclient_test.go30
-rw-r--r--lib/dns/udpclient_test.go40
17 files changed, 320 insertions, 323 deletions
diff --git a/lib/dns/answer.go b/lib/dns/answer.go
index 493de8ae..68e6a883 100644
--- a/lib/dns/answer.go
+++ b/lib/dns/answer.go
@@ -41,10 +41,6 @@ type answer struct {
// to current timestamp.
//
func newAnswer(msg *Message, isLocal bool) (an *answer) {
- if msg == nil || msg.Question == nil {
- return nil
- }
-
an = &answer{
qname: string(msg.Question.Name),
qtype: msg.Question.Type,
diff --git a/lib/dns/answer_test.go b/lib/dns/answer_test.go
index 03e64a9f..5f98ee24 100644
--- a/lib/dns/answer_test.go
+++ b/lib/dns/answer_test.go
@@ -16,15 +16,15 @@ func TestNewAnswer(t *testing.T) {
at := time.Now().Unix()
msg1 := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("test"),
Type: 1,
Class: 1,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("test"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -46,8 +46,6 @@ func TestNewAnswer(t *testing.T) {
expQClass uint16
isLocal bool
}{{
- desc: "With nil msg",
- }, {
desc: "With local message",
msg: msg1,
isLocal: true,
@@ -124,17 +122,17 @@ func TestAnswerClear(t *testing.T) {
func TestAnswerGet(t *testing.T) {
// kilabit.info A
res := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -144,8 +142,8 @@ func TestAnswerGet(t *testing.T) {
Value: []byte("127.0.0.1"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
}
_, err := res.Pack()
@@ -189,8 +187,8 @@ func TestAnswerGet(t *testing.T) {
test.Assert(t, "receivedAt", an.receivedAt >= at-5, true, true)
test.Assert(t, "accessedAt", an.accessedAt >= at, true, true)
got := &Message{
- Header: &SectionHeader{},
- Question: &SectionQuestion{},
+ Header: SectionHeader{},
+ Question: SectionQuestion{},
Packet: gotPacket,
}
err := got.Unpack()
@@ -206,12 +204,12 @@ func TestAnswerGet(t *testing.T) {
func TestAnswerUpdate(t *testing.T) {
at := time.Now().Unix() - 5
msg1 := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
},
}
msg2 := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
},
}
diff --git a/lib/dns/answers_test.go b/lib/dns/answers_test.go
index 4990763c..1af9d410 100644
--- a/lib/dns/answers_test.go
+++ b/lib/dns/answers_test.go
@@ -47,12 +47,12 @@ func TestNewAnswers(t *testing.T) {
func TestAnswersGet(t *testing.T) {
msg := &Message{
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("test"),
Type: 1,
Class: 1,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("test"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -98,12 +98,12 @@ func TestAnswersGet(t *testing.T) {
func TestAnswersRemove(t *testing.T) {
msg := &Message{
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("test"),
Type: 1,
Class: 1,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("test"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -158,7 +158,7 @@ func TestAnswersUpdate(t *testing.T) {
qtype: 1,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
},
},
@@ -177,7 +177,7 @@ func TestAnswersUpdate(t *testing.T) {
qtype: 1,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 2,
},
},
diff --git a/lib/dns/caches.go b/lib/dns/caches.go
index 27971fd2..b1ef33b3 100644
--- a/lib/dns/caches.go
+++ b/lib/dns/caches.go
@@ -123,7 +123,7 @@ func (c *caches) prune() {
}
if debug.Value >= 1 {
- fmt.Printf("dns: - 0:%s\n", an.msg.Question)
+ fmt.Printf("dns: - 0:%s\n", an.msg.Question.String())
}
next := e.Next()
diff --git a/lib/dns/caches_test.go b/lib/dns/caches_test.go
index d25d235e..2878c8a1 100644
--- a/lib/dns/caches_test.go
+++ b/lib/dns/caches_test.go
@@ -49,7 +49,7 @@ func TestCachesGet(t *testing.T) {
qtype: 1,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
},
},
@@ -60,7 +60,7 @@ func TestCachesGet(t *testing.T) {
qtype: 2,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 2,
},
},
@@ -71,7 +71,7 @@ func TestCachesGet(t *testing.T) {
qtype: 3,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 3,
},
},
@@ -127,7 +127,7 @@ func TestCachesPrune(t *testing.T) {
qtype: 1,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
},
},
@@ -139,7 +139,7 @@ func TestCachesPrune(t *testing.T) {
qtype: 2,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 2,
},
},
@@ -151,7 +151,7 @@ func TestCachesPrune(t *testing.T) {
qtype: 3,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 3,
},
},
@@ -196,7 +196,7 @@ func TestCachesUpsert(t *testing.T) {
qtype: 1,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
},
},
@@ -208,7 +208,7 @@ func TestCachesUpsert(t *testing.T) {
qtype: 1,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 3,
},
},
@@ -220,7 +220,7 @@ func TestCachesUpsert(t *testing.T) {
qtype: 2,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 2,
},
},
@@ -232,7 +232,7 @@ func TestCachesUpsert(t *testing.T) {
qtype: 2,
qclass: 1,
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 4,
},
},
diff --git a/lib/dns/dohclient_test.go b/lib/dns/dohclient_test.go
index afbe12c8..c59cf1a8 100644
--- a/lib/dns/dohclient_test.go
+++ b/lib/dns/dohclient_test.go
@@ -31,18 +31,18 @@ func TestDoHClient_Lookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -52,8 +52,8 @@ func TestDoHClient_Lookup(t *testing.T) {
Value: []byte("127.0.0.1"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:SOA QClass:IN QName:kilabit.info",
@@ -61,18 +61,18 @@ func TestDoHClient_Lookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
@@ -87,8 +87,8 @@ func TestDoHClient_Lookup(t *testing.T) {
Minimum: 3600,
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:TXT QClass:IN QName:kilabit.info",
@@ -96,18 +96,18 @@ func TestDoHClient_Lookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
@@ -116,8 +116,8 @@ func TestDoHClient_Lookup(t *testing.T) {
Value: []byte("This is a test server"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:AAAA QClass:IN QName:kilabit.info",
@@ -125,20 +125,20 @@ func TestDoHClient_Lookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0,
IsAA: false,
RCode: RCodeErrServer,
QDCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeAAAA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Answer: []ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}}
@@ -180,18 +180,18 @@ func TestDoHClient_Post(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -201,8 +201,8 @@ func TestDoHClient_Post(t *testing.T) {
Value: []byte("127.0.0.1"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:SOA QClass:IN QName:kilabit.info",
@@ -210,18 +210,18 @@ func TestDoHClient_Post(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
@@ -236,8 +236,8 @@ func TestDoHClient_Post(t *testing.T) {
Minimum: 3600,
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:TXT QClass:IN QName:kilabit.info",
@@ -245,18 +245,18 @@ func TestDoHClient_Post(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
@@ -265,8 +265,8 @@ func TestDoHClient_Post(t *testing.T) {
Value: []byte("This is a test server"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:AAAA QClass:IN QName:kilabit.info",
@@ -274,20 +274,20 @@ func TestDoHClient_Post(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0,
IsAA: false,
RCode: RCodeErrServer,
QDCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeAAAA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Answer: []ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}}
diff --git a/lib/dns/dotclient_test.go b/lib/dns/dotclient_test.go
index 42449daa..d17ff977 100644
--- a/lib/dns/dotclient_test.go
+++ b/lib/dns/dotclient_test.go
@@ -29,18 +29,18 @@ func TestDoTClient_Lookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 5,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -50,8 +50,8 @@ func TestDoTClient_Lookup(t *testing.T) {
Value: []byte("127.0.0.1"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:SOA QClass:IN QName:kilabit.info",
@@ -59,18 +59,18 @@ func TestDoTClient_Lookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 6,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
@@ -85,8 +85,8 @@ func TestDoTClient_Lookup(t *testing.T) {
Minimum: 3600,
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:TXT QClass:IN QName:kilabit.info",
@@ -94,18 +94,18 @@ func TestDoTClient_Lookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 7,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
@@ -114,8 +114,8 @@ func TestDoTClient_Lookup(t *testing.T) {
Value: []byte("This is a test server"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}}
diff --git a/lib/dns/example_udpclient_test.go b/lib/dns/example_udpclient_test.go
index f81dcb60..d5d200ca 100644
--- a/lib/dns/example_udpclient_test.go
+++ b/lib/dns/example_udpclient_test.go
@@ -19,8 +19,8 @@ func ExampleUDPClient() {
}
req := &dns.Message{
- Header: &dns.SectionHeader{},
- Question: &dns.SectionQuestion{
+ Header: dns.SectionHeader{},
+ Question: dns.SectionQuestion{
Name: []byte("kilabit.info"),
Type: dns.QueryTypeA,
Class: dns.QueryClassIN,
diff --git a/lib/dns/hosts.go b/lib/dns/hosts.go
index 1a39454c..1521a007 100644
--- a/lib/dns/hosts.go
+++ b/lib/dns/hosts.go
@@ -67,17 +67,17 @@ func newMessage(addr, hname []byte) *Message {
copy(rrName, hname)
msg := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: hname,
Type: qtype,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: rrName,
Type: qtype,
Class: QueryClassIN,
diff --git a/lib/dns/masterfile.go b/lib/dns/masterfile.go
index 8b6417cb..cd2e80f5 100644
--- a/lib/dns/masterfile.go
+++ b/lib/dns/masterfile.go
@@ -1031,21 +1031,21 @@ func (m *master) push(rr *ResourceRecord) bool {
if m.msgs[x].Question.Class != rr.Class {
continue
}
- m.msgs[x].Answer = append(m.msgs[x].Answer, rr)
+ m.msgs[x].Answer = append(m.msgs[x].Answer, *rr)
return false
}
msg := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: rr.Name,
Type: rr.Type,
Class: rr.Class,
},
- Answer: []*ResourceRecord{rr},
+ Answer: []ResourceRecord{*rr},
}
m.msgs = append(m.msgs, msg)
@@ -1087,9 +1087,9 @@ func (m *master) pack() {
if debug.Value >= 3 {
fmt.Printf("= Header: %+v\n", msg.Header)
- fmt.Printf(" Question: %s\n", msg.Question)
+ fmt.Printf(" Question: %s\n", msg.Question.String())
for x := 0; x < len(msg.Answer); x++ {
- fmt.Printf(" Answer: %s\n", msg.Answer[x])
+ fmt.Printf(" Answer: %s\n", msg.Answer[x].String())
fmt.Printf(" RData: %s\n", msg.Answer[x].RData())
}
}
diff --git a/lib/dns/masterfile_test.go b/lib/dns/masterfile_test.go
index 141658ed..12ed083e 100644
--- a/lib/dns/masterfile_test.go
+++ b/lib/dns/masterfile_test.go
@@ -164,17 +164,17 @@ VAXA A 10.2.0.27
`,
exp: []*Message{{
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("isi.edu"),
Type: QueryTypeSOA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("isi.edu"),
Type: QueryTypeSOA,
Class: QueryClassIN,
@@ -190,17 +190,17 @@ VAXA A 10.2.0.27
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 3,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("isi.edu"),
Type: QueryTypeNS,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("isi.edu"),
Type: QueryTypeNS,
Class: QueryClassIN,
@@ -226,17 +226,17 @@ VAXA A 10.2.0.27
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 2,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("isi.edu"),
Type: QueryTypeMX,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("isi.edu"),
Type: QueryTypeMX,
Class: QueryClassIN,
@@ -256,17 +256,17 @@ VAXA A 10.2.0.27
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("a.isi.edu"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("a.isi.edu"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -276,17 +276,17 @@ VAXA A 10.2.0.27
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 2,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("venera.isi.edu"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("venera.isi.edu"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -304,17 +304,17 @@ VAXA A 10.2.0.27
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 2,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("vaxa.isi.edu"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("vaxa.isi.edu"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -411,17 +411,17 @@ mail IN CNAME @
relay IN CNAME relay.pair.com.
`,
exp: []*Message{{
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("pcguide.com"),
Type: QueryTypeSOA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("pcguide.com"),
Type: QueryTypeSOA,
Class: QueryClassIN,
@@ -437,17 +437,17 @@ relay IN CNAME relay.pair.com.
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 2,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("pcguide.com"),
Type: QueryTypeNS,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("pcguide.com"),
Type: QueryTypeNS,
Class: QueryClassIN,
@@ -465,17 +465,17 @@ relay IN CNAME relay.pair.com.
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("localhost.pcguide.com"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("localhost.pcguide.com"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -485,17 +485,17 @@ relay IN CNAME relay.pair.com.
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("pcguide.com"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("pcguide.com"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -505,17 +505,17 @@ relay IN CNAME relay.pair.com.
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("pcguide.com"),
Type: QueryTypeMX,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("pcguide.com"),
Type: QueryTypeMX,
Class: QueryClassIN,
@@ -526,17 +526,17 @@ relay IN CNAME relay.pair.com.
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("www.pcguide.com"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("www.pcguide.com"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
@@ -546,17 +546,17 @@ relay IN CNAME relay.pair.com.
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("ftp.pcguide.com"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("ftp.pcguide.com"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
@@ -566,17 +566,17 @@ relay IN CNAME relay.pair.com.
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("mail.pcguide.com"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("mail.pcguide.com"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
@@ -586,17 +586,17 @@ relay IN CNAME relay.pair.com.
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("relay.pcguide.com"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("relay.pcguide.com"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
@@ -673,17 +673,17 @@ dev.kilabit.com. A 127.0.0.1
angularjs.doc A 127.0.0.1
`,
exp: []*Message{{
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("dev.kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("dev.kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -693,17 +693,17 @@ angularjs.doc A 127.0.0.1
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("dev.kilabit.com"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("dev.kilabit.com"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -713,17 +713,17 @@ angularjs.doc A 127.0.0.1
},
}},
}, {
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("angularjs.doc.localdomain"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("angularjs.doc.localdomain"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -788,17 +788,17 @@ func TestMasterParseTXT(t *testing.T) {
}{{
in: `@ IN TXT "This is a test"`,
exp: []*Message{{
- Header: &SectionHeader{
+ Header: SectionHeader{
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.local"),
Type: QueryTypeTXT,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.local"),
Type: QueryTypeTXT,
Class: QueryClassIN,
diff --git a/lib/dns/message.go b/lib/dns/message.go
index 0c8461f1..81cf15f3 100644
--- a/lib/dns/message.go
+++ b/lib/dns/message.go
@@ -49,11 +49,11 @@ import (
// [1] RFC 1035 - 4.1. Format
//
type Message struct {
- Header *SectionHeader
- Question *SectionQuestion
- Answer []*ResourceRecord
- Authority []*ResourceRecord
- Additional []*ResourceRecord
+ Header SectionHeader
+ Question SectionQuestion
+ Answer []ResourceRecord
+ Authority []ResourceRecord
+ Additional []ResourceRecord
// Slice that hold the result of packing the message or original
// message from unpacking.
@@ -72,12 +72,12 @@ type Message struct {
//
func NewMessage() *Message {
return &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
IsQuery: true,
IsRD: true,
QDCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Type: QueryTypeA,
Class: QueryClassIN,
},
@@ -90,7 +90,7 @@ func NewMessage() *Message {
// FilterAnswers return resource record in Answer that match only with
// specific query type.
//
-func (msg *Message) FilterAnswers(t uint16) (answers []*ResourceRecord) {
+func (msg *Message) FilterAnswers(t uint16) (answers []ResourceRecord) {
for _, rr := range msg.Answer {
if rr.Type == t {
answers = append(answers, rr)
@@ -548,13 +548,13 @@ func (msg *Message) Pack() ([]byte, error) {
}
for x := 0; x < len(msg.Answer); x++ {
- msg.packRR(msg.Answer[x])
+ msg.packRR(&msg.Answer[x])
}
for x := 0; x < len(msg.Authority); x++ {
- msg.packRR(msg.Authority[x])
+ msg.packRR(&msg.Authority[x])
}
for x := 0; x < len(msg.Additional); x++ {
- msg.packRR(msg.Additional[x])
+ msg.packRR(&msg.Additional[x])
}
msg.dnameOff = nil
@@ -724,11 +724,17 @@ func (msg *Message) Unpack() (err error) {
var x uint16
for ; x < msg.Header.ANCount; x++ {
- rr := NewResourceRecord()
+ rr := ResourceRecord{
+ Name: make([]byte, 0),
+ Text: &RDataText{},
+ rdata: make([]byte, 0),
+ }
+
startIdx, err = rr.unpack(msg.Packet, startIdx)
if err != nil {
return err
}
+
msg.Answer = append(msg.Answer, rr)
}
@@ -737,7 +743,12 @@ func (msg *Message) Unpack() (err error) {
}
for x = 0; x < msg.Header.NSCount; x++ {
- rr := NewResourceRecord()
+ rr := ResourceRecord{
+ Name: make([]byte, 0),
+ Text: &RDataText{},
+ rdata: make([]byte, 0),
+ }
+
startIdx, err = rr.unpack(msg.Packet, startIdx)
if err != nil {
return err
@@ -750,11 +761,17 @@ func (msg *Message) Unpack() (err error) {
}
for x = 0; x < msg.Header.ARCount; x++ {
- rr := NewResourceRecord()
+ rr := ResourceRecord{
+ Name: make([]byte, 0),
+ Text: &RDataText{},
+ rdata: make([]byte, 0),
+ }
+
startIdx, err = rr.unpack(msg.Packet, startIdx)
if err != nil {
return err
}
+
msg.Additional = append(msg.Additional, rr)
}
@@ -787,7 +804,7 @@ func (msg *Message) UnpackHeaderQuestion() (err error) {
}
if debug.Value >= 3 {
- log.Printf("msg.Question: %s\n", msg.Question)
+ log.Printf("msg.Question: %s\n", msg.Question.String())
}
return nil
diff --git a/lib/dns/message_test.go b/lib/dns/message_test.go
index 55b49808..20340ef2 100644
--- a/lib/dns/message_test.go
+++ b/lib/dns/message_test.go
@@ -18,7 +18,7 @@ func TestMessageIsExpired(t *testing.T) {
}{{
desc: "Message is not expired",
msg: &Message{
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
TTL: 1,
}},
},
@@ -26,7 +26,7 @@ func TestMessageIsExpired(t *testing.T) {
}, {
desc: "Message is expired",
msg: &Message{
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
TTL: 0,
}},
},
@@ -84,7 +84,7 @@ func TestMessagePackQuestion(t *testing.T) {
}{{
desc: "Empty name",
msg: &Message{
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Type: QueryTypeA,
Class: QueryClassIN,
},
@@ -96,7 +96,7 @@ func TestMessagePackQuestion(t *testing.T) {
}, {
desc: "Single domain name",
msg: &Message{
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilaBit"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -110,7 +110,7 @@ func TestMessagePackQuestion(t *testing.T) {
}, {
desc: "Two domain names",
msg: &Message{
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -126,7 +126,7 @@ func TestMessagePackQuestion(t *testing.T) {
}, {
desc: "Three domain names",
msg: &Message{
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("MAIL.KILABIT.INFO"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -159,12 +159,12 @@ func TestMessagePack(t *testing.T) {
}{{
desc: "Simple query",
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
IsQuery: true,
QDCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.INFO"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -187,7 +187,7 @@ func TestMessagePack(t *testing.T) {
}, {
desc: "Response with A RDATA",
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x8cdb,
IsQuery: false,
Op: OpCodeQuery,
@@ -197,12 +197,12 @@ func TestMessagePack(t *testing.T) {
ANCount: 1,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("KILABIT.INFO"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -211,7 +211,7 @@ func TestMessagePack(t *testing.T) {
Value: []byte("103.200.4.162"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Type: QueryTypeOPT,
Class: 0x0500,
TTL: 0,
@@ -277,7 +277,7 @@ func TestMessagePack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0xd4a6,
IsQuery: false,
Op: OpCodeQuery,
@@ -288,12 +288,12 @@ func TestMessagePack(t *testing.T) {
NSCount: 0,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeNS,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeNS,
Class: QueryClassIN,
@@ -318,7 +318,7 @@ func TestMessagePack(t *testing.T) {
Value: []byte("ns1.dewaweb.com"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Type: QueryTypeOPT,
Class: 0x0500,
TTL: 0,
@@ -350,7 +350,7 @@ func TestMessagePack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x8a38,
IsQuery: false,
Op: OpCodeQuery,
@@ -360,12 +360,12 @@ func TestMessagePack(t *testing.T) {
ANCount: 1,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("mail.kilabit.info"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("mail.kilabit.info"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
@@ -374,7 +374,7 @@ func TestMessagePack(t *testing.T) {
Value: []byte("kilabit.info"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Type: QueryTypeOPT,
Class: 0x0500,
TTL: 0,
@@ -399,19 +399,19 @@ func TestMessagePack(t *testing.T) {
0x51, 0x80,
},
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 2,
IsQuery: false,
Op: OpCodeQuery,
IsRA: true,
QDCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
@@ -483,7 +483,7 @@ func TestMessagePack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x9eef,
IsQuery: false,
Op: OpCodeQuery,
@@ -493,12 +493,12 @@ func TestMessagePack(t *testing.T) {
ANCount: 5,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("google.com"),
Type: QueryTypeMX,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("google.com"),
Type: QueryTypeMX,
Class: QueryClassIN,
@@ -544,7 +544,7 @@ func TestMessagePack(t *testing.T) {
Exchange: []byte("alt4.aspmx.l.GOOGLE.COM"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Type: QueryTypeOPT,
Class: 0x0500,
TTL: 0,
@@ -583,7 +583,7 @@ func TestMessagePack(t *testing.T) {
0x00, 0x00, 0x29, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 16253,
IsQuery: false,
Op: OpCodeQuery,
@@ -591,12 +591,12 @@ func TestMessagePack(t *testing.T) {
IsRA: true,
QDCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("google.com"),
Type: QueryTypeTXT,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("google.com"),
Type: QueryTypeTXT,
Class: QueryClassIN,
@@ -621,7 +621,7 @@ func TestMessagePack(t *testing.T) {
Value: []byte("docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Type: QueryTypeOPT,
Class: 1280,
TTL: 0,
@@ -650,7 +650,7 @@ func TestMessagePack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x2c90,
IsRD: true,
IsRA: true,
@@ -658,12 +658,12 @@ func TestMessagePack(t *testing.T) {
ANCount: 1,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("google.com"),
Type: QueryTypeAAAA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("google.com"),
Type: QueryTypeAAAA,
TTL: 0x53,
@@ -672,7 +672,7 @@ func TestMessagePack(t *testing.T) {
Value: []byte("2404:6800:4003:c00::8b"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Name: []byte{},
Type: QueryTypeOPT,
Class: 1280,
@@ -751,7 +751,7 @@ func TestMessagePack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
msg: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x2cb4,
IsRD: true,
IsRA: true,
@@ -759,12 +759,12 @@ func TestMessagePack(t *testing.T) {
ANCount: 5,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("_xmpp-server._tcp.google.com"),
Type: QueryTypeSRV,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("_xmpp-server._tcp.google.com"),
Type: QueryTypeSRV,
Class: QueryClassIN,
@@ -835,7 +835,7 @@ func TestMessagePack(t *testing.T) {
Target: []byte("alt3.xmpp-server.l.google.com"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Name: []byte{},
Type: QueryTypeOPT,
Class: 512,
@@ -856,13 +856,13 @@ func TestMessagePack(t *testing.T) {
func TestMessageSetAuthoritativeAnswer(t *testing.T) {
msgQuery := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
IsQuery: true,
IsAA: true,
IsRD: true,
},
- Question: &SectionQuestion{},
+ Question: SectionQuestion{},
Packet: make([]byte, maxUDPPacketSize),
dnameOff: make(map[string]uint16),
}
@@ -873,13 +873,13 @@ func TestMessageSetAuthoritativeAnswer(t *testing.T) {
}
msgResponse := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
IsAA: true,
IsRD: true,
IsRA: true,
},
- Question: &SectionQuestion{},
+ Question: SectionQuestion{},
Packet: make([]byte, maxUDPPacketSize),
dnameOff: make(map[string]uint16),
}
@@ -926,13 +926,13 @@ func TestMessageSetAuthoritativeAnswer(t *testing.T) {
//nolint:dupl
func TestMessageSetQuery(t *testing.T) {
msgQuery := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
IsQuery: true,
IsAA: true,
IsRD: true,
},
- Question: &SectionQuestion{},
+ Question: SectionQuestion{},
Packet: make([]byte, maxUDPPacketSize),
dnameOff: make(map[string]uint16),
}
@@ -970,13 +970,13 @@ func TestMessageSetQuery(t *testing.T) {
//nolint:dupl
func TestMessageSetRecursionDesired(t *testing.T) {
msgQuery := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
IsQuery: true,
IsAA: true,
IsRD: true,
},
- Question: &SectionQuestion{},
+ Question: SectionQuestion{},
Packet: make([]byte, maxUDPPacketSize),
dnameOff: make(map[string]uint16),
}
@@ -1013,13 +1013,13 @@ func TestMessageSetRecursionDesired(t *testing.T) {
func TestMessageSetResponseCode(t *testing.T) {
msgQuery := &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 1,
IsQuery: true,
IsAA: true,
IsRD: true,
},
- Question: &SectionQuestion{},
+ Question: SectionQuestion{},
Packet: make([]byte, maxUDPPacketSize),
dnameOff: make(map[string]uint16),
}
@@ -1080,7 +1080,7 @@ func TestMessageUnpack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x8cdb,
IsQuery: false,
Op: OpCodeQuery,
@@ -1090,12 +1090,12 @@ func TestMessageUnpack(t *testing.T) {
ANCount: 1,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -1106,7 +1106,7 @@ func TestMessageUnpack(t *testing.T) {
Value: []byte("103.200.4.162"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Name: []byte{},
Type: QueryTypeOPT,
Class: 0x0500,
@@ -1156,7 +1156,7 @@ func TestMessageUnpack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0xd4a6,
IsQuery: false,
Op: OpCodeQuery,
@@ -1167,12 +1167,12 @@ func TestMessageUnpack(t *testing.T) {
NSCount: 0,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeNS,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeNS,
Class: QueryClassIN,
@@ -1209,7 +1209,7 @@ func TestMessageUnpack(t *testing.T) {
Value: []byte("ns1.dewaweb.com"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Name: []byte{},
Type: QueryTypeOPT,
Class: 0x0500,
@@ -1243,7 +1243,7 @@ func TestMessageUnpack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x8a38,
IsQuery: false,
Op: OpCodeQuery,
@@ -1253,12 +1253,12 @@ func TestMessageUnpack(t *testing.T) {
ANCount: 1,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("mail.kilabit.info"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("mail.kilabit.info"),
Type: QueryTypeCNAME,
Class: QueryClassIN,
@@ -1269,7 +1269,7 @@ func TestMessageUnpack(t *testing.T) {
Value: []byte("kilabit.info"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Name: make([]byte, 0),
Type: QueryTypeOPT,
Class: 0x0500,
@@ -1306,7 +1306,7 @@ func TestMessageUnpack(t *testing.T) {
0x00, 0x01, 0x51, 0x80,
},
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 2,
IsQuery: false,
Op: OpCodeQuery,
@@ -1315,12 +1315,12 @@ func TestMessageUnpack(t *testing.T) {
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
@@ -1402,7 +1402,7 @@ func TestMessageUnpack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x9eef,
IsQuery: false,
Op: OpCodeQuery,
@@ -1412,12 +1412,12 @@ func TestMessageUnpack(t *testing.T) {
ANCount: 5,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("google.com"),
Type: QueryTypeMX,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("google.com"),
Type: QueryTypeMX,
Class: QueryClassIN,
@@ -1494,7 +1494,7 @@ func TestMessageUnpack(t *testing.T) {
Exchange: []byte("alt4.aspmx.l.google.com"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Name: []byte{},
Type: QueryTypeOPT,
Class: 0x0500,
@@ -1551,7 +1551,7 @@ func TestMessageUnpack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 16253,
IsQuery: false,
Op: OpCodeQuery,
@@ -1561,12 +1561,12 @@ func TestMessageUnpack(t *testing.T) {
ANCount: 3,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("google.com"),
Type: QueryTypeTXT,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("google.com"),
Type: QueryTypeTXT,
Class: QueryClassIN,
@@ -1619,7 +1619,7 @@ func TestMessageUnpack(t *testing.T) {
Value: []byte("docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Name: []byte{},
Type: QueryTypeOPT,
Class: 1280,
@@ -1651,7 +1651,7 @@ func TestMessageUnpack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x2c90,
IsRD: true,
IsRA: true,
@@ -1659,12 +1659,12 @@ func TestMessageUnpack(t *testing.T) {
ANCount: 1,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("google.com"),
Type: QueryTypeAAAA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("google.com"),
Type: QueryTypeAAAA,
Class: QueryClassIN,
@@ -1678,7 +1678,7 @@ func TestMessageUnpack(t *testing.T) {
Value: []byte("2404:6800:4003:c00::8b"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Name: []byte{},
Type: QueryTypeOPT,
Class: 1280,
@@ -1759,7 +1759,7 @@ func TestMessageUnpack(t *testing.T) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 0x2cb4,
IsRD: true,
IsRA: true,
@@ -1767,12 +1767,12 @@ func TestMessageUnpack(t *testing.T) {
ANCount: 5,
ARCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("_xmpp-server._tcp.google.com"),
Type: QueryTypeSRV,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("_xmpp-server._tcp.google.com"),
Type: QueryTypeSRV,
Class: QueryClassIN,
@@ -1887,7 +1887,7 @@ func TestMessageUnpack(t *testing.T) {
Target: []byte("alt3.xmpp-server.l.google.com"),
},
}},
- Additional: []*ResourceRecord{{
+ Additional: []ResourceRecord{{
Name: []byte{},
Type: QueryTypeOPT,
Class: 512,
@@ -1912,8 +1912,8 @@ func TestMessageUnpack(t *testing.T) {
t.Fatal(err)
}
- test.Assert(t, "Header", *c.exp.Header, *msg.Header, true)
- test.Assert(t, "Question", *c.exp.Question, *msg.Question, true)
+ test.Assert(t, "Header", c.exp.Header, msg.Header, true)
+ test.Assert(t, "Question", c.exp.Question, msg.Question, true)
test.Assert(t, "Answer Length", len(c.exp.Answer), len(msg.Answer), true)
test.Assert(t, "Authority Length", len(c.exp.Authority), len(msg.Authority), true)
test.Assert(t, "Additional Length", len(c.exp.Additional), len(msg.Additional), true)
diff --git a/lib/dns/resourcerecord.go b/lib/dns/resourcerecord.go
index 41626b04..9ee882ed 100644
--- a/lib/dns/resourcerecord.go
+++ b/lib/dns/resourcerecord.go
@@ -130,26 +130,8 @@ func (rr *ResourceRecord) RData() interface{} {
}
//
-// Reset the resource record fields to zero values.
+// String return the text representation of ResourceRecord for human.
//
-func (rr *ResourceRecord) Reset() {
- rr.Name = rr.Name[:0]
- rr.Type = QueryTypeZERO
- rr.Class = QueryClassZERO
- rr.TTL = 0
- rr.rdlen = 0
- rr.rdata = rr.rdata[:0]
- rr.Text = nil
- rr.SOA = nil
- rr.WKS = nil
- rr.HInfo = nil
- rr.MInfo = nil
- rr.MX = nil
- rr.OPT = nil
- rr.off = 0
- rr.offTTL = 0
-}
-
func (rr *ResourceRecord) String() string {
var buf bytes.Buffer
diff --git a/lib/dns/server.go b/lib/dns/server.go
index 000dea1f..e37d74fe 100644
--- a/lib/dns/server.go
+++ b/lib/dns/server.go
@@ -160,12 +160,12 @@ func isResponseValid(req *request, res *Message) bool {
}
if req.message.Question.Type != res.Question.Type {
log.Printf("dns: unmatched response type, got %s want %s\n",
- req.message.Question, res.Question)
+ req.message.Question.String(), res.Question.String())
return false
}
if req.message.Question.Class != res.Question.Class {
log.Printf("dns: unmatched response class, got %s want %s\n",
- req.message.Question, res.Question)
+ req.message.Question.String(), res.Question.String())
return false
}
@@ -688,7 +688,7 @@ func (srv *Server) processRequest() {
fmt.Printf("dns: < %s %d:%s\n",
connTypeNames[req.kind],
req.message.Header.ID,
- req.message.Question)
+ req.message.Question.String())
}
ans, an := srv.caches.get(string(req.message.Question.Name),
@@ -703,7 +703,7 @@ func (srv *Server) processRequest() {
fmt.Printf("dns: * %s %d:%s\n",
connTypeNames[req.kind],
req.message.Header.ID,
- req.message.Question)
+ req.message.Question.String())
}
req.error(RCodeErrServer)
}
@@ -716,7 +716,7 @@ func (srv *Server) processRequest() {
fmt.Printf("dns: ~ %s %d:%s\n",
connTypeNames[req.kind],
req.message.Header.ID,
- req.message.Question)
+ req.message.Question.String())
}
srv.primaryq <- req
} else {
@@ -724,7 +724,7 @@ func (srv *Server) processRequest() {
fmt.Printf("dns: * %s %d:%s\n",
connTypeNames[req.kind],
req.message.Header.ID,
- req.message.Question)
+ req.message.Question.String())
}
req.error(RCodeErrServer)
}
@@ -738,7 +738,7 @@ func (srv *Server) processRequest() {
if debug.Value >= 1 {
fmt.Printf("dns: > %s %d:%s\n",
connTypeNames[req.kind],
- res.Header.ID, res.Question)
+ res.Header.ID, res.Question.String())
}
_, err := req.writer.Write(res.Packet)
@@ -763,7 +763,7 @@ func (srv *Server) processResponse(req *request, res *Message) {
if res.Header.RCode != 0 {
log.Printf("dns: ! %s %s %d:%s\n",
connTypeNames[req.kind], rcodeNames[res.Header.RCode],
- res.Header.ID, res.Question)
+ res.Header.ID, res.Question.String())
return
}
@@ -774,11 +774,11 @@ func (srv *Server) processResponse(req *request, res *Message) {
if inserted {
fmt.Printf("dns: + %s %d:%s\n",
connTypeNames[req.kind],
- res.Header.ID, res.Question)
+ res.Header.ID, res.Question.String())
} else {
fmt.Printf("dns: # %s %d:%s\n",
connTypeNames[req.kind],
- res.Header.ID, res.Question)
+ res.Header.ID, res.Question.String())
}
}
}
@@ -872,7 +872,8 @@ func (srv *Server) runDohForwarder(nameserver string, primaryq, fallbackq chan *
if debug.Value >= 1 {
fmt.Printf("dns: ^ %s %s %d:%s\n",
tag, nameserver,
- req.message.Header.ID, req.message.Question)
+ req.message.Header.ID,
+ req.message.Question.String())
}
res, err = forwarder.Query(req.message)
@@ -943,7 +944,8 @@ func (srv *Server) runTLSForwarder(nameserver string, primaryq, fallbackq chan *
if debug.Value >= 1 {
fmt.Printf("dns: ^ %s %s %d:%s\n",
tag, nameserver,
- req.message.Header.ID, req.message.Question)
+ req.message.Header.ID,
+ req.message.Question.String())
}
res, err = forwarder.Query(req.message)
@@ -997,7 +999,8 @@ func (srv *Server) runTCPForwarder(remoteAddr string, primaryq, fallbackq chan *
if debug.Value >= 1 {
fmt.Printf("dns: ^ %s %s %d:%s\n",
tag, remoteAddr,
- req.message.Header.ID, req.message.Question)
+ req.message.Header.ID,
+ req.message.Question.String())
}
cl, err := NewTCPClient(remoteAddr)
@@ -1077,7 +1080,8 @@ func (srv *Server) runUDPForwarder(remoteAddr string, primaryq, fallbackq chan *
if debug.Value >= 1 {
fmt.Printf("dns: ^ %s %s %d:%s\n",
tag, remoteAddr,
- req.message.Header.ID, req.message.Question)
+ req.message.Header.ID,
+ req.message.Question.String())
}
res, err = forwarder.Query(req.message)
diff --git a/lib/dns/tcpclient_test.go b/lib/dns/tcpclient_test.go
index 8a9d612d..0c1e5b9a 100644
--- a/lib/dns/tcpclient_test.go
+++ b/lib/dns/tcpclient_test.go
@@ -29,18 +29,18 @@ func TestTCPClientLookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 5,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -50,8 +50,8 @@ func TestTCPClientLookup(t *testing.T) {
Value: []byte("127.0.0.1"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:SOA QClass:IN QName:kilabit.info",
@@ -59,18 +59,18 @@ func TestTCPClientLookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 6,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
@@ -85,8 +85,8 @@ func TestTCPClientLookup(t *testing.T) {
Minimum: 3600,
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:TXT QClass:IN QName:kilabit.info",
@@ -94,18 +94,18 @@ func TestTCPClientLookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 7,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
@@ -114,8 +114,8 @@ func TestTCPClientLookup(t *testing.T) {
Value: []byte("This is a test server"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}}
diff --git a/lib/dns/udpclient_test.go b/lib/dns/udpclient_test.go
index 9040d007..44953de3 100644
--- a/lib/dns/udpclient_test.go
+++ b/lib/dns/udpclient_test.go
@@ -29,18 +29,18 @@ func TestUDPClientLookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 8,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeA,
Class: QueryClassIN,
@@ -50,8 +50,8 @@ func TestUDPClientLookup(t *testing.T) {
Value: []byte("127.0.0.1"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:SOA QClass:IN QName:kilabit.info",
@@ -59,18 +59,18 @@ func TestUDPClientLookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 9,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeSOA,
Class: QueryClassIN,
@@ -85,8 +85,8 @@ func TestUDPClientLookup(t *testing.T) {
Minimum: 3600,
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:TXT QClass:IN QName:kilabit.info",
@@ -94,18 +94,18 @@ func TestUDPClientLookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 10,
IsAA: true,
QDCount: 1,
ANCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{{
+ Answer: []ResourceRecord{{
Name: []byte("kilabit.info"),
Type: QueryTypeTXT,
Class: QueryClassIN,
@@ -114,8 +114,8 @@ func TestUDPClientLookup(t *testing.T) {
Value: []byte("This is a test server"),
},
}},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "QType:AAAA QClass:IN QName:kilabit.info",
@@ -123,20 +123,20 @@ func TestUDPClientLookup(t *testing.T) {
qclass: QueryClassIN,
qname: []byte("kilabit.info"),
exp: &Message{
- Header: &SectionHeader{
+ Header: SectionHeader{
ID: 11,
IsAA: false,
RCode: RCodeErrServer,
QDCount: 1,
},
- Question: &SectionQuestion{
+ Question: SectionQuestion{
Name: []byte("kilabit.info"),
Type: QueryTypeAAAA,
Class: QueryClassIN,
},
- Answer: []*ResourceRecord{},
- Authority: []*ResourceRecord{},
- Additional: []*ResourceRecord{},
+ Answer: []ResourceRecord{},
+ Authority: []ResourceRecord{},
+ Additional: []ResourceRecord{},
},
}, {
desc: "IsRD:true QType:AAAA QClass:IN QName:kilabit.info",