@@ -38,25 +38,18 @@ + (void)addBaggageHeader:(SentryBaggage *)baggage
3838 }
3939 }
4040
41- if ([request isKindOfClass: [NSMutableURLRequest class ]]) {
42- NSMutableURLRequest *mutableRequest = (NSMutableURLRequest *)request;
43- [SentryTracePropagation addHeaderFieldsToRequest: mutableRequest
41+ // CFNetwork may read currentRequest concurrently, so never mutate it in place.
42+ SEL setCurrentRequestSelector = NSSelectorFromString (@" setCurrentRequest:" );
43+ if ([sessionTask respondsToSelector: setCurrentRequestSelector]) {
44+ NSMutableURLRequest *newRequest = [request mutableCopy ];
45+ [SentryTracePropagation addHeaderFieldsToRequest: newRequest
4446 traceHeader: traceHeader
4547 baggageHeader: baggageHeader
4648 propagateTraceparent: propagateTraceparent];
47- } else {
48- SEL setCurrentRequestSelector = NSSelectorFromString (@" setCurrentRequest:" );
49- if ([sessionTask respondsToSelector: setCurrentRequestSelector]) {
50- NSMutableURLRequest *newRequest = [request mutableCopy ];
51- [SentryTracePropagation addHeaderFieldsToRequest: newRequest
52- traceHeader: traceHeader
53- baggageHeader: baggageHeader
54- propagateTraceparent: propagateTraceparent];
5549
56- void (*func)(id , SEL , id param)
57- = (void *)[sessionTask methodForSelector: setCurrentRequestSelector];
58- func (sessionTask, setCurrentRequestSelector, newRequest);
59- }
50+ void (*func)(id , SEL , id param)
51+ = (void *)[sessionTask methodForSelector: setCurrentRequestSelector];
52+ func (sessionTask, setCurrentRequestSelector, newRequest);
6053 }
6154}
6255
0 commit comments