Add more tests

This commit is contained in:
Miek Gieben 2012-01-11 21:03:47 +01:00
parent 3886728bdb
commit eb12c526f2
4 changed files with 30 additions and 6 deletions

View File

@ -69,7 +69,7 @@ func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
m.Extra[0] = t
m.Answer[0] = rr
b, ok := m.Pack()
if !ok {
if !ok {
log.Print("Packing failed")
return
}

View File

@ -1,6 +1,7 @@
package dns
import (
"net"
"testing"
)
@ -43,6 +44,29 @@ func TestPackUnpack(t *testing.T) {
}
}
func TestPackUnpack2(t *testing.T) {
m := new(Msg)
m.Extra = make([]RR, 1)
m.Answer = make([]RR, 1)
dom := "miek.nl."
rr := new(RR_A)
rr.Hdr = RR_Header{Name: dom, Rrtype: TypeA, Class: ClassINET, Ttl: 0}
rr.A = net.IPv4(127, 0, 0, 1)
x := new(RR_TXT)
x.Hdr = RR_Header{Name: dom, Rrtype: TypeTXT, Class: ClassINET, Ttl: 0}
x.Txt = "heelalaollo"
m.Extra[0] = x
m.Answer[0] = rr
_, ok := m.Pack()
if !ok {
t.Log("Packing failed")
t.Fail()
return
}
}
func TestEDNS_RR(t *testing.T) {
edns := new(RR_OPT)
edns.Hdr.Name = "." // must . be for edns

6
msg.go
View File

@ -375,7 +375,7 @@ func packStructValue(val reflect.Value, msg []byte, off int, compression map[str
switch fv.Len() {
case net.IPv6len:
if off+net.IPv4len > lenmsg {
println("dns: overflow packing A")
println("dns: overflow packing A", off, lenmsg)
return lenmsg, false
}
msg[off] = byte(fv.Index(12).Uint())
@ -385,7 +385,7 @@ func packStructValue(val reflect.Value, msg []byte, off int, compression map[str
off += net.IPv4len
case net.IPv4len:
if off+net.IPv4len > lenmsg {
println("dns: overflow packing A")
println("dns: overflow packing A", off, lenmsg)
return lenmsg, false
}
msg[off] = byte(fv.Index(0).Uint())
@ -1014,7 +1014,7 @@ func (dns *Msg) Pack() (msg []byte, ok bool) {
dh.Arcount = uint16(len(extra))
// TODO: still a little too much, but better than 64K...
msg = make([]byte, dns.Len()*2)
msg = make([]byte, dns.Len())
// Pack it in: header and then the pieces.
off := 0

View File

@ -494,7 +494,7 @@ func (rr *RR_A) String() string {
}
func (rr *RR_A) Len() int {
return rr.Hdr.Len() + 4 /// 4 bytes?
return rr.Hdr.Len() + net.IPv4len
}
type RR_AAAA struct {
@ -511,7 +511,7 @@ func (rr *RR_AAAA) String() string {
}
func (rr *RR_AAAA) Len() int {
return rr.Hdr.Len() + 16
return rr.Hdr.Len() + net.IPv6len
}
type RR_LOC struct {