From 69d2ef56a5094e63dc2eada1d667f16a619761ef Mon Sep 17 00:00:00 2001 From: Barbayar DASHZEVEG Date: Mon, 31 Jan 2022 23:07:23 +0100 Subject: [PATCH] Updated x-datadog-tags spec --- ddtrace/tracer/util.go | 10 ++++++---- ddtrace/tracer/util_test.go | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ddtrace/tracer/util.go b/ddtrace/tracer/util.go index 4a0326584c..116d0aef4d 100644 --- a/ddtrace/tracer/util.go +++ b/ddtrace/tracer/util.go @@ -102,11 +102,13 @@ func parsePropagatableTraceTags(s string) (map[string]string, error) { for i, ch := range s { switch ch { case '=': - if !searchingKey || i-start == 0 { - return nil, fmt.Errorf("invalid format") + if searchingKey { + if i-start == 0 { + return nil, fmt.Errorf("invalid format") + } + key = s[start:i] + searchingKey, start = false, i+1 } - key = s[start:i] - searchingKey, start = false, i+1 case ',': if searchingKey || i-start == 0 { return nil, fmt.Errorf("invalid format") diff --git a/ddtrace/tracer/util_test.go b/ddtrace/tracer/util_test.go index b23daf4b26..42cc0a5f39 100644 --- a/ddtrace/tracer/util_test.go +++ b/ddtrace/tracer/util_test.go @@ -100,10 +100,12 @@ func TestParsePropagatableTraceTags(t *testing.T) { {"hello=world", map[string]string{"hello": "world"}, nil}, {" hello = world ", map[string]string{" hello ": " world "}, nil}, {"hello=world,service=account", map[string]string{"hello": "world", "service": "account"}, nil}, + {"hello=wor=ld====,service=account,tag1=val=ue1", map[string]string{"hello": "wor=ld====", "service": "account", "tag1": "val=ue1"}, nil}, {"hello", nil, fmt.Errorf("invalid format")}, {"hello=world,service=", nil, fmt.Errorf("invalid format")}, {"hello=world,", nil, fmt.Errorf("invalid format")}, {"=world", nil, fmt.Errorf("invalid format")}, + {"hello=,tag1=value1", nil, fmt.Errorf("invalid format")}, {",hello=world", nil, fmt.Errorf("invalid format")}, } { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {