Fix NAPTR's length function

Add the 3 bytes for the length byte of the strings.

Close issue #67.
This commit is contained in:
Miek Gieben 2014-01-04 11:30:20 +00:00
parent f094f37de3
commit 9e73cb688f
3 changed files with 21 additions and 2 deletions

View File

@ -144,6 +144,24 @@ func TestPack(t *testing.T) {
}
}
func TestPackNAPTR(t *testing.T) {
for _, n := range []string{
`apple.com. IN NAPTR 100 50 "se" "SIP+D2U" "" _sip._udp.apple.com.`,
`apple.com. IN NAPTR 90 50 "se" "SIP+D2T" "" _sip._tcp.apple.com.`,
`apple.com. IN NAPTR 50 50 "se" "SIPS+D2T" "" _sips._tcp.apple.com.`,
} {
rr, _ := NewRR(n)
msg := make([]byte, rr.len())
if off, err := PackRR(rr, msg, 0, nil, false); err != nil {
t.Logf("Packing failed: %s", err.Error())
t.Logf("Length %d, need more than %d\n", rr.len(), off)
t.Fail()
} else {
t.Logf("Buf size needed: %d\n", off)
}
}
}
func TestCompressLength(t *testing.T) {
m := new(Msg)
m.SetQuestion("miek.nl", TypeMX)

1
msg.go
View File

@ -1357,6 +1357,7 @@ func (dns *Msg) Pack() (msg []byte, err error) {
}
}
for i := 0; i < len(answer); i++ {
println(i, off, len(msg))
off, err = PackRR(answer[i], msg, off, compression, dns.Compress)
if err != nil {
return nil, err

View File

@ -583,8 +583,8 @@ func (rr *NAPTR) String() string {
}
func (rr *NAPTR) len() int {
return rr.Hdr.len() + 4 + len(rr.Flags) + len(rr.Service) +
len(rr.Regexp) + len(rr.Replacement) + 1
return rr.Hdr.len() + 4 + len(rr.Flags) + 1 + len(rr.Service) + 1 +
len(rr.Regexp) + 1 + len(rr.Replacement) + 1
}
// See RFC 4398.