aboutsummaryrefslogtreecommitdiff
path: root/plugin/trace/trace.go
diff options
context:
space:
mode:
authorGravatar Ondřej Benkovský <ondrej.benkovsky@jamf.com> 2022-06-20 16:08:53 +0200
committerGravatar GitHub <noreply@github.com> 2022-06-20 07:08:53 -0700
commitaf4d84d9158680ad1eb63c1fcc9b2acb6666505c (patch)
tree3704a1424d2f8cafd08698198bbc5c81cfc4ad1e /plugin/trace/trace.go
parent1290427645b825939e2483d9f78efa53f2ce7c4a (diff)
downloadcoredns-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.go11
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) {