@@ -89,16 +89,6 @@ class HttpTraceContext : public context::propagation::TextMapPropagator
89
89
static constexpr uint8_t kInvalidVersion = 0xFF ;
90
90
static constexpr uint8_t kDefaultAssumedVersion = 0x00 ;
91
91
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
-
102
92
static void InjectImpl (context::propagation::TextMapCarrier &carrier,
103
93
const SpanContext &span_context)
104
94
{
@@ -152,19 +142,23 @@ class HttpTraceContext : public context::propagation::TextMapPropagator
152
142
// hex is valid, convert it to binary
153
143
uint8_t version_binary;
154
144
detail::HexToBinary (version_hex, &version_binary, sizeof (version_binary));
155
- if (! IsValidVersion ( version_binary) )
145
+ if (version_binary == kInvalidVersion )
156
146
{
147
+ // invalid version encountered
157
148
return SpanContext::GetInvalid ();
158
149
}
159
150
160
- if (IsHigherVersion (version_binary) && trace_parent.size () < kTraceParentSize )
161
- {
162
- return SpanContext::GetInvalid ();
163
- }
164
-
165
- if (!IsHigherVersion (version_binary) && trace_parent.size () != kTraceParentSize )
166
- {
167
- return SpanContext::GetInvalid ();
151
+ // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent
152
+ if (version_binary > kDefaultAssumedVersion ) {
153
+ // higher than default version detected
154
+ if (trace_parent.size () < kTraceParentSize ) {
155
+ return SpanContext::GetInvalid ();
156
+ }
157
+ } else {
158
+ // version is either lower or same as the default version
159
+ if (trace_parent.size () != kTraceParentSize ) {
160
+ return SpanContext::GetInvalid ();
161
+ }
168
162
}
169
163
170
164
TraceId trace_id = TraceIdFromHex (trace_id_hex);
0 commit comments