diff options
author | easy <g-easy@users.noreply.github.com> | 2018-10-08 20:43:06 +1100 |
---|---|---|
committer | easy <g-easy@users.noreply.github.com> | 2018-10-08 20:43:06 +1100 |
commit | f551f475f07c105d9d40ce05074f4a771aae3029 (patch) | |
tree | f4f6a0b6a5bb617237d22be0623935adc98cc22d /src/cpp/ext | |
parent | 3b26fe7262a9db90dfb69f84ad582d9f71871a5c (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.cc | 12 |
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, |