aboutsummaryrefslogtreecommitdiff
path: root/plugin
diff options
context:
space:
mode:
Diffstat (limited to 'plugin')
-rw-r--r--plugin/log/log.go12
-rw-r--r--plugin/log/log_test.go4
2 files changed, 10 insertions, 6 deletions
diff --git a/plugin/log/log.go b/plugin/log/log.go
index 49581dfc4..7e6201138 100644
--- a/plugin/log/log.go
+++ b/plugin/log/log.go
@@ -26,20 +26,24 @@ type Logger struct {
// ServeDNS implements the plugin.Handler interface.
func (l Logger) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
state := request.Request{W: w, Req: r}
+ name := state.Name()
for _, rule := range l.Rules {
- if !plugin.Name(rule.NameScope).Matches(state.Name()) {
+ if !plugin.Name(rule.NameScope).Matches(name) {
continue
}
rrw := dnstest.NewRecorder(w)
rc, err := plugin.NextOrFailure(l.Name(), l.Next, ctx, rrw, r)
- tpe, _ := response.Typify(rrw.Msg, time.Now().UTC())
- class := response.Classify(tpe)
// If we don't set up a class in config, the default "all" will be added
// and we shouldn't have an empty rule.Class.
_, ok := rule.Class[response.All]
- _, ok1 := rule.Class[class]
+ var ok1 bool
+ if !ok {
+ tpe, _ := response.Typify(rrw.Msg, time.Now().UTC())
+ class := response.Classify(tpe)
+ _, ok1 = rule.Class[class]
+ }
if ok || ok1 {
logstr := l.repl.Replace(ctx, state, rrw, rule.Format)
clog.Infof(logstr)
diff --git a/plugin/log/log_test.go b/plugin/log/log_test.go
index e7f29fff1..16efb2026 100644
--- a/plugin/log/log_test.go
+++ b/plugin/log/log_test.go
@@ -3,6 +3,7 @@ package log
import (
"bytes"
"context"
+ "io/ioutil"
"log"
"strings"
"testing"
@@ -239,8 +240,7 @@ func TestLogged(t *testing.T) {
}
func BenchmarkLogged(b *testing.B) {
- var f bytes.Buffer
- log.SetOutput(&f)
+ log.SetOutput(ioutil.Discard)
rule := Rule{
NameScope: ".",