Fix NAPTR's length function
Add the 3 bytes for the length byte of the strings. Close issue #67.
This commit is contained in:
parent
f094f37de3
commit
9e73cb688f
18
dns_test.go
18
dns_test.go
|
@ -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
1
msg.go
|
@ -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
|
||||
|
|
4
types.go
4
types.go
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue