diff options
author | 2022-06-20 16:08:53 +0200 | |
---|---|---|
committer | 2022-06-20 07:08:53 -0700 | |
commit | af4d84d9158680ad1eb63c1fcc9b2acb6666505c (patch) | |
tree | 3704a1424d2f8cafd08698198bbc5c81cfc4ad1e /plugin/trace/trace.go | |
parent | 1290427645b825939e2483d9f78efa53f2ce7c4a (diff) | |
download | coredns-af4d84d9158680ad1eb63c1fcc9b2acb6666505c.tar.gz coredns-af4d84d9158680ad1eb63c1fcc9b2acb6666505c.tar.zst coredns-af4d84d9158680ad1eb63c1fcc9b2acb6666505c.zip |
plugin/trace: read trace context info from headers for DOH (#5439)
Signed-off-by: Ondřej Benkovský <ondrej.benkovsky@jamf.com>
Diffstat (limited to 'plugin/trace/trace.go')
-rw-r--r-- | plugin/trace/trace.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/plugin/trace/trace.go b/plugin/trace/trace.go index 87cb65e68..6bfd94dae 100644 --- a/plugin/trace/trace.go +++ b/plugin/trace/trace.go @@ -4,9 +4,11 @@ package trace import ( "context" "fmt" + "net/http" "sync" "sync/atomic" + "github.com/coredns/coredns/core/dnsserver" "github.com/coredns/coredns/plugin" "github.com/coredns/coredns/plugin/metadata" "github.com/coredns/coredns/plugin/pkg/dnstest" @@ -140,8 +142,15 @@ func (t *trace) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) return plugin.NextOrFailure(t.Name(), t.Next, ctx, w, r) } + var spanCtx ot.SpanContext + if val := ctx.Value(dnsserver.HTTPRequestKey{}); val != nil { + if httpReq, ok := val.(*http.Request); ok { + spanCtx, _ = t.Tracer().Extract(ot.HTTPHeaders, ot.HTTPHeadersCarrier(httpReq.Header)) + } + } + req := request.Request{W: w, Req: r} - span = t.Tracer().StartSpan(defaultTopLevelSpanName) + span = t.Tracer().StartSpan(defaultTopLevelSpanName, otext.RPCServerOption(spanCtx)) defer span.Finish() switch spanCtx := span.Context().(type) { |