@@ -8,6 +8,7 @@ @implementation SentryTracePropagation
88
99+ (void )addBaggageHeader : (SentryBaggage *)baggage
1010 traceHeader : (SentryTraceHeader *)traceHeader
11+ propagateTraceparent : (BOOL )propagateTraceparent
1112 tracePropagationTargets : (NSArray *)tracePropagationTargets
1213 toRequest : (NSURLSessionTask *)sessionTask
1314{
@@ -33,14 +34,10 @@ + (void)addBaggageHeader:(SentryBaggage *)baggage
3334 // header.
3435 if ([sessionTask.currentRequest isKindOfClass: [NSMutableURLRequest class ]]) {
3536 NSMutableURLRequest *currentRequest = (NSMutableURLRequest *)sessionTask.currentRequest ;
36-
37- if ([currentRequest valueForHTTPHeaderField: SENTRY_TRACE_HEADER] == nil ) {
38- [currentRequest setValue: traceHeader.value forHTTPHeaderField: SENTRY_TRACE_HEADER];
39- }
40-
41- if (baggageHeader.length > 0 ) {
42- [currentRequest setValue: baggageHeader forHTTPHeaderField: SENTRY_BAGGAGE_HEADER];
43- }
37+ [SentryTracePropagation addHeaderFieldsToRequest: currentRequest
38+ traceHeader: traceHeader
39+ baggageHeader: baggageHeader
40+ propagateTraceparent: propagateTraceparent];
4441 } else {
4542 // Even though NSURLSessionTask doesn't have 'setCurrentRequest', some subclasses
4643 // do. For those subclasses we replace the currentRequest with a mutable one with
@@ -49,14 +46,10 @@ + (void)addBaggageHeader:(SentryBaggage *)baggage
4946 SEL setCurrentRequestSelector = NSSelectorFromString (@" setCurrentRequest:" );
5047 if ([sessionTask respondsToSelector: setCurrentRequestSelector]) {
5148 NSMutableURLRequest *newRequest = [sessionTask.currentRequest mutableCopy ];
52-
53- if ([newRequest valueForHTTPHeaderField: SENTRY_TRACE_HEADER] == nil ) {
54- [newRequest setValue: traceHeader.value forHTTPHeaderField: SENTRY_TRACE_HEADER];
55- }
56-
57- if (baggageHeader.length > 0 ) {
58- [newRequest setValue: baggageHeader forHTTPHeaderField: SENTRY_BAGGAGE_HEADER];
59- }
49+ [SentryTracePropagation addHeaderFieldsToRequest: newRequest
50+ traceHeader: traceHeader
51+ baggageHeader: baggageHeader
52+ propagateTraceparent: propagateTraceparent];
6053
6154 void (*func)(id , SEL , id param)
6255 = (void *)[sessionTask methodForSelector: setCurrentRequestSelector];
@@ -73,6 +66,24 @@ + (BOOL)sessionTaskRequiresPropagation:(NSURLSessionTask *)sessionTask
7366 withTargets: tracePropagationTargets];
7467}
7568
69+ + (void )addHeaderFieldsToRequest : (NSMutableURLRequest *)request
70+ traceHeader : (SentryTraceHeader *)traceHeader
71+ baggageHeader : (NSString *)baggageHeader
72+ propagateTraceparent : (BOOL )propagateTraceparent
73+ {
74+ if ([request valueForHTTPHeaderField: SENTRY_TRACE_HEADER] == nil ) {
75+ [request setValue: traceHeader.value forHTTPHeaderField: SENTRY_TRACE_HEADER];
76+ }
77+
78+ if (propagateTraceparent && [request valueForHTTPHeaderField: SENTRY_TRACEPARENT] == nil ) {
79+ [request setValue: traceHeader.traceParentValue forHTTPHeaderField: SENTRY_TRACEPARENT];
80+ }
81+
82+ if (baggageHeader.length > 0 ) {
83+ [request setValue: baggageHeader forHTTPHeaderField: SENTRY_BAGGAGE_HEADER];
84+ }
85+ }
86+
7687+ (BOOL )isTargetMatch : (NSURL *)URL withTargets : (NSArray *)targets
7788{
7889 for (id targetCheck in targets) {
0 commit comments