@@ -129,47 +129,47 @@ PropagationTags fromHeaderValue(PTagsFactory tagsFactory, String value) {
129129 if (tagValueEndsAt == ddMemberValueEnd ) {
130130 tagValueEndsAt = stripTrailingOWC (value , tagValuePos , tagValueEndsAt );
131131 }
132- TagKey tagKey = TagKey .from (Encoding .W3C , value , tagPos , tagKeyEndsAt );
133- if (tagKey != null ) {
134- TagValue tagValue = TagValue .from (Encoding .W3C , value , tagValuePos , tagValueEndsAt );
135- if (!tagKey .equals (UPSTREAM_SERVICES_DEPRECATED_TAG )) {
136- if (!validateTagValue (tagKey , tagValue )) {
137- log .warn (
138- "Invalid datadog tags header value: '{}' invalid tag value at {}" ,
139- value ,
140- tagValuePos );
141- if (tagKey .equals (TRACE_ID_TAG )) {
142- return tagsFactory .createInvalid (PROPAGATION_ERROR_MALFORMED_TID + tagValue );
132+ int keyLength = tagKeyEndsAt - tagPos ;
133+ char c = value .charAt (tagPos );
134+ if (keyLength == 1 && c == 's' ) {
135+ samplingPriority = validateSamplingPriority (value , tagValuePos , tagValueEndsAt );
136+ } else if (keyLength == 1 && c == 'o' ) {
137+ origin = TagValue .from (Encoding .W3C , value , tagValuePos , tagValueEndsAt );
138+ } else if (keyLength == 1 && c == 'p' ) {
139+ lastParentId = TagValue .from (Encoding .W3C , value , tagValuePos , tagValueEndsAt );
140+ } else {
141+ TagKey tagKey = TagKey .from (Encoding .W3C , value , tagPos , tagKeyEndsAt );
142+ if (tagKey != null ) {
143+ TagValue tagValue = TagValue .from (Encoding .W3C , value , tagValuePos , tagValueEndsAt );
144+ if (!tagKey .equals (UPSTREAM_SERVICES_DEPRECATED_TAG )) {
145+ if (!validateTagValue (tagKey , tagValue )) {
146+ log .warn (
147+ "Invalid datadog tags header value: '{}' invalid tag value at {}" ,
148+ value ,
149+ tagValuePos );
150+ if (tagKey .equals (TRACE_ID_TAG )) {
151+ return tagsFactory .createInvalid (PROPAGATION_ERROR_MALFORMED_TID + tagValue );
152+ }
153+ // TODO drop parts?
154+ return empty (tagsFactory , value , firstMemberStart , ddMemberStart , ddMemberValueEnd );
143155 }
144- // TODO drop parts?
145- return empty ( tagsFactory , value , firstMemberStart , ddMemberStart , ddMemberValueEnd ) ;
146- }
147- if ( tagKey . equals ( DECISION_MAKER_TAG )) {
148- decisionMakerTagValue = tagValue ;
149- } else if ( tagKey . equals ( TRACE_ID_TAG )) {
150- traceIdTagValue = tagValue ;
151- } else if (tagKey . equals ( TRACE_SOURCE_TAG ) ) {
152- traceSource = ProductTraceSource . parseBitfieldHex ( tagValue . toString ());
153- } else {
154- if ( tagPairs == null ) {
155- // This is roughly the size of a two element linked list but can hold six
156- tagPairs = new ArrayList <>( 6 );
156+ if ( tagKey . equals ( DECISION_MAKER_TAG )) {
157+ decisionMakerTagValue = tagValue ;
158+ } else if ( tagKey . equals ( TRACE_ID_TAG )) {
159+ traceIdTagValue = tagValue ;
160+ } else if ( tagKey . equals ( TRACE_SOURCE_TAG )) {
161+ traceSource = ProductTraceSource . parseBitfieldHex ( tagValue . toString ());
162+ } else {
163+ if (tagPairs == null ) {
164+ // This is roughly the size of a two element linked list but can hold six
165+ tagPairs = new ArrayList <>( 6 );
166+ }
167+ tagPairs . add ( tagKey );
168+ tagPairs . add ( tagValue );
157169 }
158- tagPairs .add (tagKey );
159- tagPairs .add (tagValue );
160170 }
161- }
162- } else {
163- // This was not a propagating tag, so check if we know it
164- int keyLength = tagKeyEndsAt - tagPos ;
165- char c = value .charAt (tagPos );
166- if (keyLength == 1 && c == 's' ) {
167- samplingPriority = validateSamplingPriority (value , tagValuePos , tagValueEndsAt );
168- } else if (keyLength == 1 && c == 'o' ) {
169- origin = TagValue .from (Encoding .W3C , value , tagValuePos , tagValueEndsAt );
170- } else if (keyLength == 1 && c == 'p' ) {
171- lastParentId = TagValue .from (Encoding .W3C , value , tagValuePos , tagValueEndsAt );
172171 } else {
172+ // Not a propagating tag and not a known tag
173173 if (maxUnknownSize != 0 ) {
174174 maxUnknownSize ++; // delimiter
175175 }
0 commit comments