aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/cpp/ext
diff options
context:
space:
mode:
authorGravatar easy <g-easy@users.noreply.github.com>2018-10-08 20:43:06 +1100
committerGravatar easy <g-easy@users.noreply.github.com>2018-10-08 20:43:06 +1100
commitf551f475f07c105d9d40ce05074f4a771aae3029 (patch)
treef4f6a0b6a5bb617237d22be0623935adc98cc22d /src/cpp/ext
parent3b26fe7262a9db90dfb69f84ad582d9f71871a5c (diff)
GenerateServerContext: Don't use a parent context if it's invalid.
Diffstat (limited to 'src/cpp/ext')
-rw-r--r--src/cpp/ext/filters/census/context.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/cpp/ext/filters/census/context.cc b/src/cpp/ext/filters/census/context.cc
index 4b3250236d..78fc69a805 100644
--- a/src/cpp/ext/filters/census/context.cc
+++ b/src/cpp/ext/filters/census/context.cc
@@ -29,9 +29,15 @@ void GenerateServerContext(absl::string_view tracing, absl::string_view stats,
absl::string_view primary_role,
absl::string_view method, CensusContext* context) {
GrpcTraceContext trace_ctxt;
- TraceContextEncoding::Decode(tracing, &trace_ctxt);
- SpanContext parent_ctx = trace_ctxt.ToSpanContext();
- new (context) CensusContext(method, parent_ctx);
+ if (TraceContextEncoding::Decode(tracing, &trace_ctxt) !=
+ TraceContextEncoding::kEncodeDecodeFailure) {
+ SpanContext parent_ctx = trace_ctxt.ToSpanContext();
+ if (parent_ctx.IsValid()) {
+ new (context) CensusContext(method, parent_ctx);
+ return;
+ }
+ }
+ new (context) CensusContext(method);
}
void GenerateClientContext(absl::string_view method, CensusContext* ctxt,