Merge pull request #134 from asergeyev/master

Attempting to fix #133
This commit is contained in:
Miek Gieben 2014-09-24 14:15:31 +01:00
commit c12ae078ae
3 changed files with 15 additions and 14 deletions

View File

@ -1,2 +1,6 @@
a.example.com. IN A 127.0.0.1 a.example.com. IN A 127.0.0.1
8db7._openpgpkey.example.com. IN OPENPGPKEY mQCNAzIG 8db7._openpgpkey.example.com. IN OPENPGPKEY mQCNAzIG
$ORIGIN a.example.com.
test IN A 127.0.0.1
$ORIGIN b.example.com.
test IN CNAME test.a.example.com.

View File

@ -106,7 +106,7 @@ func PrivateHandle(rtypestr string, rtype uint16, generator func() PrivateRdata)
return rr, nil, "" return rr, nil, ""
} }
typeToparserFunc[rtype] = parserFunc{setPrivateRR, false} typeToparserFunc[rtype] = parserFunc{setPrivateRR, true}
} }
// PrivateHandleRemove removes defenitions required to support private RR type. // PrivateHandleRemove removes defenitions required to support private RR type.

View File

@ -24,23 +24,20 @@ type parserFunc struct {
// or immediately a _NEWLINE. If this is not the case we flag // or immediately a _NEWLINE. If this is not the case we flag
// an *ParseError: garbage after rdata. // an *ParseError: garbage after rdata.
func setRR(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { func setRR(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) {
var r RR
e := new(ParseError)
parserfunc, ok := typeToparserFunc[h.Rrtype] parserfunc, ok := typeToparserFunc[h.Rrtype]
if ok { if ok {
r, e, cm := parserfunc.Func(h, c, o, f)
if parserfunc.Variable { if parserfunc.Variable {
r, e, _ = parserfunc.Func(h, c, o, f) return r, e, cm
if e != nil {
return nil, e, ""
}
se, com := slurpRemainder(c, f)
if se != nil {
return nil, se, ""
}
return r, e, com
} }
return parserfunc.Func(h, c, o, f) if e != nil {
return nil, e, ""
}
e, cm = slurpRemainder(c, f)
if e != nil {
return nil, e, ""
}
return r, nil, cm
} }
// RFC3957 RR (Unknown RR handling) // RFC3957 RR (Unknown RR handling)
return setRFC3597(h, c, o, f) return setRFC3597(h, c, o, f)