diff options
Diffstat (limited to 'plugin/rewrite/rewrite.go')
-rw-r--r-- | plugin/rewrite/rewrite.go | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/plugin/rewrite/rewrite.go b/plugin/rewrite/rewrite.go index 13e1d2092..f44cc62f1 100644 --- a/plugin/rewrite/rewrite.go +++ b/plugin/rewrite/rewrite.go @@ -49,10 +49,11 @@ func (rw Rewrite) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg state.Req.Question[0] = wr.originalQuestion return dns.RcodeServerFailure, err } - respRule := rule.GetResponseRule() - if respRule.Active { - wr.ResponseRewrite = true - wr.ResponseRules = append(wr.ResponseRules, respRule) + for _, respRule := range rule.GetResponseRules() { + if respRule.Active { + wr.ResponseRewrite = true + wr.ResponseRules = append(wr.ResponseRules, respRule) + } } if rule.Mode() == Stop { if rw.noRevert { @@ -78,8 +79,8 @@ type Rule interface { Rewrite(ctx context.Context, state request.Request) Result // Mode returns the processing mode stop or continue. Mode() string - // GetResponseRule returns the rule to rewrite response with, if any. - GetResponseRule() ResponseRule + // GetResponseRules returns rules to rewrite response with, if any. + GetResponseRules() []ResponseRule } func newRule(args ...string) (Rule, error) { |