do not log NOERROR in log plugin when response is not available (#4725)
Signed-off-by: Ondrej Benkovsky <ondrej.benkovsky@wandera.com>
This commit is contained in:
parent
002b748ccd
commit
a6a7e73813
2 changed files with 50 additions and 1 deletions
|
@ -86,7 +86,7 @@ func appendValue(b []byte, state request.Request, rr *dnstest.Recorder, label st
|
||||||
return strconv.AppendInt(b, int64(state.Size()), 10)
|
return strconv.AppendInt(b, int64(state.Size()), 10)
|
||||||
// Recorded replacements.
|
// Recorded replacements.
|
||||||
case "{rcode}":
|
case "{rcode}":
|
||||||
if rr == nil {
|
if rr == nil || rr.Msg == nil {
|
||||||
return append(b, EmptyValue...)
|
return append(b, EmptyValue...)
|
||||||
}
|
}
|
||||||
if rcode := dns.RcodeToString[rr.Rcode]; rcode != "" {
|
if rcode := dns.RcodeToString[rr.Rcode]; rcode != "" {
|
||||||
|
|
|
@ -393,3 +393,52 @@ func TestMetadataMalformed(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNoResponseWasWritten(t *testing.T) {
|
||||||
|
w := dnstest.NewRecorder(&test.ResponseWriter{})
|
||||||
|
r := new(dns.Msg)
|
||||||
|
r.SetQuestion("example.org.", dns.TypeHINFO)
|
||||||
|
r.Id = 1053
|
||||||
|
r.AuthenticatedData = true
|
||||||
|
r.CheckingDisabled = true
|
||||||
|
state := request.Request{W: w, Req: r}
|
||||||
|
|
||||||
|
replacer := New()
|
||||||
|
ctx := context.TODO()
|
||||||
|
|
||||||
|
// This couples the test very tightly to the code, but so be it.
|
||||||
|
expect := map[string]string{
|
||||||
|
"{type}": "HINFO",
|
||||||
|
"{name}": "example.org.",
|
||||||
|
"{class}": "IN",
|
||||||
|
"{proto}": "udp",
|
||||||
|
"{size}": "29",
|
||||||
|
"{remote}": "10.240.0.1",
|
||||||
|
"{port}": "40212",
|
||||||
|
"{local}": "127.0.0.1",
|
||||||
|
headerReplacer + "id}": "1053",
|
||||||
|
headerReplacer + "opcode}": "0",
|
||||||
|
headerReplacer + "do}": "false",
|
||||||
|
headerReplacer + "bufsize}": "512",
|
||||||
|
"{rcode}": "-",
|
||||||
|
"{rsize}": "0",
|
||||||
|
"{duration}": "0",
|
||||||
|
headerReplacer + "rflags}": "-",
|
||||||
|
}
|
||||||
|
if len(expect) != len(labels) {
|
||||||
|
t.Fatalf("Expect %d labels, got %d", len(expect), len(labels))
|
||||||
|
}
|
||||||
|
|
||||||
|
for lbl := range labels {
|
||||||
|
repl := replacer.Replace(ctx, state, w, lbl)
|
||||||
|
if lbl == "{duration}" {
|
||||||
|
if repl[len(repl)-1] != 's' {
|
||||||
|
t.Errorf("Expected seconds, got %q", repl)
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if repl != expect[lbl] {
|
||||||
|
t.Errorf("Expected value %q, got %q", expect[lbl], repl)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue