diff options
author | 2021-07-10 07:34:53 +0200 | |
---|---|---|
committer | 2021-07-10 07:34:53 +0200 | |
commit | d17e50afc7e231b0389596cbe69b82f85e4221f3 (patch) | |
tree | 2ea387dabb3ba899ee0c87bffe59101b0ea829f5 /plugin/trace/trace.go | |
parent | 6efda5293e012238d34157c6eca29c0e5cbf7119 (diff) | |
download | coredns-d17e50afc7e231b0389596cbe69b82f85e4221f3.tar.gz coredns-d17e50afc7e231b0389596cbe69b82f85e4221f3.tar.zst coredns-d17e50afc7e231b0389596cbe69b82f85e4221f3.zip |
plugin/trace: fix rcode tag in case of no response (#4742)
Signed-off-by: Ondrej Benkovsky <ondrej.benkovsky@wandera.com>
Diffstat (limited to 'plugin/trace/trace.go')
-rw-r--r-- | plugin/trace/trace.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/plugin/trace/trace.go b/plugin/trace/trace.go index 4d3deb207..1b74dcbc3 100644 --- a/plugin/trace/trace.go +++ b/plugin/trace/trace.go @@ -149,7 +149,14 @@ func (t *trace) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) span.SetTag(t.tagSet.Type, req.Type()) span.SetTag(t.tagSet.Proto, req.Proto()) span.SetTag(t.tagSet.Remote, req.IP()) - span.SetTag(t.tagSet.Rcode, rcode.ToString(rw.Rcode)) + 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 + } + span.SetTag(t.tagSet.Rcode, rcode.ToString(rc)) if err != nil { otext.Error.Set(span, true) span.LogFields(otlog.Event("error"), otlog.Error(err)) |