aboutsummaryrefslogtreecommitdiff
path: root/plugin/trace/trace.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/trace/trace.go')
-rw-r--r--plugin/trace/trace.go9
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))