Fix parsing of AAAA records

This commit is contained in:
Miek Gieben 2011-07-18 17:40:55 +02:00
parent e1bd7db73b
commit e50100848c
4 changed files with 995 additions and 885 deletions

View File

@ -147,25 +147,25 @@ func TestSetString(t *testing.T) {
a := new(RR_A)
a.SetString("miek.nl. IN A 127.0.0.1")
if a.String() != "miek.nl.\t0\tIN\tA\t127.0.0.1" {
t.Log(a.String())
t.Log(a.String(), "miek.nl. IN A 127.0.0.1")
t.Fail()
}
b := new(RR_AAAA)
b.SetString("miek.nl. IN AAAA ::1")
if b.String() != "miek.nl.\t0\tIN\tAAAA\t::1" {
t.Log(b.String())
t.Log(b.String(), "miek.nl. IN AAAA ::1")
t.Fail()
}
c := new(RR_MX)
c.SetString("miek.nl. IN MX 10 miek.nl.")
if c.String() != "miek.nl.\t0\tIN\tMX\t10 miek.nl." {
t.Log(c.String())
t.Log(c.String(), "miek.nl. IN MX 10 miek.nl.")
t.Fail()
}
d := new(RR_NS)
d.SetString("miek.nl. IN NS ns1.miek.nl")
if d.String() != "miek.nl.\t0\tIN\tNS\tns1.miek.nl" {
t.Log(d.String())
t.Log(d.String(), "miek.nl. IN NS ns1.miek.nl")
t.Fail()
}
}

View File

@ -521,7 +521,7 @@ func (rr *RR_AAAA) String() string {
func (rr *RR_AAAA) SetString(s string) (*RR_AAAA, bool) {
p := parse(s)
if p != nil {
if p == nil {
return nil, false
}
if _, ok := p.(*RR_AAAA); !ok {

1848
zparse.go

File diff suppressed because it is too large Load Diff

View File

@ -69,6 +69,7 @@ func Zparse(q io.Reader) (rr RR, err os.Error) {
buf := make([]byte, _IOBUF)
n, err := q.Read(buf)
if err != nil {
println("RETURNING HERE\n")
return nil, err
}
buf = buf[:n]
@ -94,7 +95,8 @@ func Zparse(q io.Reader) (rr RR, err os.Error) {
i := Str_rr[data[mark:p]]
mk, known := rr_mk[int(i)]
if ! known {
// ...
println("Unknown type seen: " + data[mark:p])
// panic?
}
rr = mk()
hdr.Rrtype = i
@ -103,11 +105,11 @@ func Zparse(q io.Reader) (rr RR, err os.Error) {
qclass = ('IN'i|'CS'i|'CH'i|'HS'i|'ANY'i|'NONE'i) %qclass;
ttl = digit+ >mark;
bl = [ \t]+ %mark;
qname = [a-zA-Z0-9.\\]+ %qname;
# If I use this in the definitions at the end, things break...
tb = [a-zA-Z0-9.\\ ]+ $1 %0 %textblank;
# t = [a-zA-Z0-9.\\]+ $1 %0 %text;
t = [a-zA-Z0-9.\\/+=]+ $1 %0 %text;
qname = [a-zA-Z0-9.\\_]+ %qname;
# If I use this in the definitions at the end, things break.
# 6l seems to hang when compiling the resulting .go file...
tb = [ a-zA-Z0-9.\\/+=:]+ $1 %0 %textblank;
t = [a-zA-Z0-9.\\/+=:]+ $1 %0 %text;
n = [0-9]+ $1 %0 %number;
comment = /^;/;
@ -142,11 +144,11 @@ func Zparse(q io.Reader) (rr RR, err os.Error) {
if cs < z_first_final {
// No clue what I'm doing what so ever
if p == pe {
//return nil, os.ErrorString("unexpected eof")
return nil, nil
println("unexpected eof")
return rr, nil
} else {
//return nil, os.ErrorString(fmt.Sprintf("error at position %d", p))
return nil, nil
println("error at position ", p)
return rr, nil
}
}
return rr, nil