From 2b62ad04f29d8a041dc8133bdcc4a374ff53d0f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BB=D0=B8=D0=B9=20=D0=A2=D0=BE?= =?UTF-8?q?=D0=BB=D1=81=D1=82=D0=BE=D0=B2?= Date: Mon, 9 Dec 2024 19:06:49 +0300 Subject: [PATCH] metadata: fix for grpc case (#370) Signed-off-by: Vasiliy Tolstov Reviewed-on: https://git.unistack.org/unistack-org/micro/pulls/370 --- metadata/metadata.go | 6 ++++++ metadata/metadata_test.go | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/metadata/metadata.go b/metadata/metadata.go index 7fd26e8a..46744b9a 100644 --- a/metadata/metadata.go +++ b/metadata/metadata.go @@ -4,6 +4,7 @@ package metadata import ( "net/textproto" "sort" + "strings" ) var ( @@ -73,6 +74,9 @@ func (md Metadata) Get(key string) (string, bool) { if !ok { // slow path val, ok = md[textproto.CanonicalMIMEHeaderKey(key)] + if !ok { + val, ok = md[strings.ToLower(key)] + } } return val, ok } @@ -94,6 +98,8 @@ func (md Metadata) Del(keys ...string) { delete(md, key) // slow path delete(md, textproto.CanonicalMIMEHeaderKey(key)) + // very slow path + delete(md, strings.ToLower(key)) } } diff --git a/metadata/metadata_test.go b/metadata/metadata_test.go index 84738f81..5c45a133 100644 --- a/metadata/metadata_test.go +++ b/metadata/metadata_test.go @@ -5,6 +5,15 @@ import ( "testing" ) +func TestLowercase(t *testing.T) { + md := New(1) + md["x-request-id"] = "12345" + v, ok := md.Get("X-Request-Id") + if !ok || v == "" { + t.Fatalf("metadata invalid %#+v", md) + } +} + func TestMultipleUsage(t *testing.T) { ctx := context.TODO() md := New(0)