Add more tests
This commit is contained in:
parent
3886728bdb
commit
eb12c526f2
|
@ -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
|
||||
}
|
||||
|
|
24
dns_test.go
24
dns_test.go
|
@ -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
6
msg.go
|
@ -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
|
||||
|
|
4
types.go
4
types.go
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue