|
6 | 6 | #if !NETFRAMEWORK |
7 | 7 | using System; |
8 | 8 | using System.Collections.Generic; |
| 9 | +using System.Collections.ObjectModel; |
9 | 10 | using System.Linq; |
10 | 11 | using Datadog.Trace.AppSec; |
11 | 12 | using Datadog.Trace.AppSec.Coordinator; |
@@ -74,29 +75,24 @@ private PropagationContext ExtractPropagatedContext(Tracer tracer, HttpRequest r |
74 | 75 | return default; |
75 | 76 | } |
76 | 77 |
|
77 | | - private void AddHeaderTagsToSpan(ISpan span, HttpRequest request, Tracer tracer) |
| 78 | + private void AddHeaderTagsToSpan(ISpan span, HttpRequest request, Tracer tracer, ReadOnlyDictionary<string, string> headerTagsInternal) |
78 | 79 | { |
79 | | - var headerTagsInternal = tracer.CurrentTraceSettings.Settings.HeaderTags; |
80 | | - |
81 | | - if (!headerTagsInternal.IsNullOrEmpty()) |
| 80 | + try |
82 | 81 | { |
83 | | - try |
84 | | - { |
85 | | - // extract propagation details from http headers |
86 | | - if (request.Headers is { } requestHeaders) |
87 | | - { |
88 | | - tracer.TracerManager.SpanContextPropagator.AddHeadersToSpanAsTags( |
89 | | - span, |
90 | | - new HeadersCollectionAdapter(requestHeaders), |
91 | | - headerTagsInternal, |
92 | | - defaultTagPrefix: SpanContextPropagator.HttpRequestHeadersTagPrefix); |
93 | | - } |
94 | | - } |
95 | | - catch (Exception ex) |
| 82 | + // extract propagation details from http headers |
| 83 | + if (request.Headers is { } requestHeaders) |
96 | 84 | { |
97 | | - _log.Error(ex, "Error extracting propagated HTTP headers."); |
| 85 | + tracer.TracerManager.SpanContextPropagator.AddHeadersToSpanAsTags( |
| 86 | + span, |
| 87 | + new HeadersCollectionAdapter(requestHeaders), |
| 88 | + headerTagsInternal, |
| 89 | + defaultTagPrefix: SpanContextPropagator.HttpRequestHeadersTagPrefix); |
98 | 90 | } |
99 | 91 | } |
| 92 | + catch (Exception ex) |
| 93 | + { |
| 94 | + _log.Error(ex, "Error extracting propagated HTTP headers."); |
| 95 | + } |
100 | 96 | } |
101 | 97 |
|
102 | 98 | public Scope StartAspNetCorePipelineScope(Tracer tracer, Security security, Iast.Iast iast, HttpContext httpContext, string resourceName) |
@@ -125,7 +121,13 @@ public Scope StartAspNetCorePipelineScope(Tracer tracer, Security security, Iast |
125 | 121 |
|
126 | 122 | var scope = tracer.StartActiveInternal(_requestInOperationName, extractedContext.SpanContext, tags: tags, links: extractedContext.Links); |
127 | 123 | scope.Span.DecorateWebServerSpan(resourceName, httpMethod, host, url, userAgent, tags); |
128 | | - AddHeaderTagsToSpan(scope.Span, request, tracer); |
| 124 | + |
| 125 | + var headerTagsInternal = tracer.CurrentTraceSettings.Settings.HeaderTags; |
| 126 | + if (!headerTagsInternal.IsNullOrEmpty()) |
| 127 | + { |
| 128 | + AddHeaderTagsToSpan(scope.Span, request, tracer, headerTagsInternal); |
| 129 | + } |
| 130 | + |
129 | 131 | tracer.TracerManager.SpanContextPropagator.AddBaggageToSpanAsTags(scope.Span, extractedContext.Baggage, tracer.Settings.BaggageTagKeys); |
130 | 132 |
|
131 | 133 | var originalPath = request.PathBase.HasValue ? request.PathBase.Add(request.Path) : request.Path; |
|
0 commit comments