when no response is written, fallback to status of next plugin in prometheus plugin (#4727)
* when no response is written, fallback to status of next plugin in prometheus plugin Signed-off-by: Ondrej Benkovsky <ondrej.benkovsky@wandera.com> * fixup! when no response is written, fallback to status of next plugin in prometheus plugin Signed-off-by: Ondrej Benkovsky <ondrej.benkovsky@wandera.com>
This commit is contained in:
parent
70b51a73d3
commit
2a61309cad
1 changed files with 8 additions and 1 deletions
|
@ -26,7 +26,14 @@ func (m *Metrics) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg
|
|||
rw := dnstest.NewRecorder(w)
|
||||
status, err := plugin.NextOrFailure(m.Name(), m.Next, ctx, rw, r)
|
||||
|
||||
vars.Report(WithServer(ctx), state, zone, rcode.ToString(rw.Rcode), rw.Len, rw.Start)
|
||||
rc := rw.Rcode
|
||||
if !plugin.ClientWrite(status) {
|
||||
// when no response was written, fallback to status returned from next plugin as this status
|
||||
// is actually used as rcode of DNS response
|
||||
// see https://github.com/coredns/coredns/blob/master/core/dnsserver/server.go#L318
|
||||
rc = status
|
||||
}
|
||||
vars.Report(WithServer(ctx), state, zone, rcode.ToString(rc), rw.Len, rw.Start)
|
||||
|
||||
return status, err
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue