diff options
Diffstat (limited to 'plugin/rewrite/rewrite.go')
-rw-r--r-- | plugin/rewrite/rewrite.go | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/plugin/rewrite/rewrite.go b/plugin/rewrite/rewrite.go index 643f2d7c9..64283df92 100644 --- a/plugin/rewrite/rewrite.go +++ b/plugin/rewrite/rewrite.go @@ -50,7 +50,6 @@ func (rw Rewrite) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg state.Req.Question[0] = wr.originalQuestion return dns.RcodeServerFailure, fmt.Errorf("invalid name after rewrite: %s", x) } - respRule := rule.GetResponseRule() if respRule.Active == true { wr.ResponseRewrite = true @@ -111,23 +110,25 @@ func newRule(args ...string) (Rule, error) { startArg = 1 } - if ruleType == "answer" { - return nil, fmt.Errorf("response rewrites must begin with a name rule") - } - - if ruleType != "edns0" && ruleType != "name" && expectNumArgs != 3 { - return nil, fmt.Errorf("%s rules must have exactly two arguments", ruleType) - } - switch ruleType { + case "answer": + return nil, fmt.Errorf("response rewrites must begin with a name rule") case "name": return newNameRule(mode, args[startArg:]...) case "class": + if expectNumArgs != 3 { + return nil, fmt.Errorf("%s rules must have exactly two arguments", ruleType) + } return newClassRule(mode, args[startArg:]...) case "type": + if expectNumArgs != 3 { + return nil, fmt.Errorf("%s rules must have exactly two arguments", ruleType) + } return newTypeRule(mode, args[startArg:]...) case "edns0": return newEdns0Rule(mode, args[startArg:]...) + case "ttl": + return newTtlRule(mode, args[startArg:]...) default: return nil, fmt.Errorf("invalid rule type %q", args[0]) } |