diff --git a/src/OpenTelemetry.Api/Context/Propagation/TraceContextPropagator.cs b/src/OpenTelemetry.Api/Context/Propagation/TraceContextPropagator.cs index 49554de17cb..9d4b7434ce0 100644 --- a/src/OpenTelemetry.Api/Context/Propagation/TraceContextPropagator.cs +++ b/src/OpenTelemetry.Api/Context/Propagation/TraceContextPropagator.cs @@ -382,21 +382,20 @@ private static bool TryExtractMultipleTracestate(IEnumerable tracestateC foreach (var tracestateEntry in tracestateCollection) { var tracestate = tracestateEntry.AsSpan(); - var begin = 0; - while (begin < tracestate.Length) + while (!tracestate.IsEmpty) { ReadOnlySpan listMember; - var length = tracestate.Slice(begin).IndexOf(','); + var length = tracestate.IndexOf(','); if (length != -1) { - listMember = tracestate.Slice(begin, length).Trim(); - begin += length + 1; + listMember = tracestate.Slice(0, length).Trim(); + tracestate = tracestate.Slice(length + 1); } else { - listMember = tracestate.Slice(begin).Trim(); - begin = tracestate.Length; + listMember = tracestate.Trim(); + tracestate = []; } // https://github.com/w3c/trace-context/blob/master/spec/20-http_request_header_format.md#tracestate-header-field-values