@@ -89,16 +89,6 @@ class HttpTraceContext : public context::propagation::TextMapPropagator
8989 static constexpr uint8_t kInvalidVersion = 0xFF ;
9090 static constexpr uint8_t kDefaultAssumedVersion = 0x00 ;
9191
92- static bool IsValidVersion (uint8_t version_binary)
93- {
94- return version_binary != kInvalidVersion ;
95- }
96-
97- static bool IsHigherVersion (uint8_t version_binary)
98- {
99- return version_binary > kDefaultAssumedVersion ;
100- }
101-
10292 static void InjectImpl (context::propagation::TextMapCarrier &carrier,
10393 const SpanContext &span_context)
10494 {
@@ -152,19 +142,28 @@ class HttpTraceContext : public context::propagation::TextMapPropagator
152142 // hex is valid, convert it to binary
153143 uint8_t version_binary;
154144 detail::HexToBinary (version_hex, &version_binary, sizeof (version_binary));
155- if (! IsValidVersion ( version_binary) )
145+ if (version_binary == kInvalidVersion )
156146 {
147+ // invalid version encountered
157148 return SpanContext::GetInvalid ();
158149 }
159150
160- if (IsHigherVersion (version_binary) && trace_parent.size () < kTraceParentSize )
151+ // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent
152+ if (version_binary > kDefaultAssumedVersion )
161153 {
162- return SpanContext::GetInvalid ();
154+ // higher than default version detected
155+ if (trace_parent.size () < kTraceParentSize )
156+ {
157+ return SpanContext::GetInvalid ();
158+ }
163159 }
164-
165- if (!IsHigherVersion (version_binary) && trace_parent.size () != kTraceParentSize )
160+ else
166161 {
167- return SpanContext::GetInvalid ();
162+ // version is either lower or same as the default version
163+ if (trace_parent.size () != kTraceParentSize )
164+ {
165+ return SpanContext::GetInvalid ();
166+ }
168167 }
169168
170169 TraceId trace_id = TraceIdFromHex (trace_id_hex);
0 commit comments