Attempting to fix #133

- Trying to get as close to original state as possible
- Since private RR should not run slurp, toggling Variable there.
This commit is contained in:
Alex Sergeyev 2014-09-23 21:59:09 -04:00
parent 45e66bfe1d
commit aaf867499e
3 changed files with 15 additions and 14 deletions

View File

@ -1,2 +1,6 @@
a.example.com. IN A 127.0.0.1
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, ""
}
typeToparserFunc[rtype] = parserFunc{setPrivateRR, false}
typeToparserFunc[rtype] = parserFunc{setPrivateRR, true}
}
// 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
// an *ParseError: garbage after rdata.
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]
if ok {
r, e, cm := parserfunc.Func(h, c, o, f)
if parserfunc.Variable {
r, e, _ = parserfunc.Func(h, c, o, f)
if e != nil {
return nil, e, ""
}
se, com := slurpRemainder(c, f)
if se != nil {
return nil, se, ""
}
return r, e, com
return r, e, cm
}
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)
return setRFC3597(h, c, o, f)