From d9670171ad4f464cff8834382bb178aab93e4409 Mon Sep 17 00:00:00 2001 From: Ethan Date: Fri, 17 May 2024 14:24:06 +0800 Subject: [PATCH] fix: fix grpc proxy wrapper modify binder (#1094) fix grpc proxy wrapper modify binder --- pkg/server/xecho/handler.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkg/server/xecho/handler.go b/pkg/server/xecho/handler.go index c9ab41c573..bc7edcd843 100644 --- a/pkg/server/xecho/handler.go +++ b/pkg/server/xecho/handler.go @@ -19,7 +19,6 @@ import ( "net/http" "reflect" "strings" - "sync" "github.com/codegangsta/inject" "github.com/douyu/jupiter/pkg/util/xerror" @@ -77,6 +76,8 @@ func ProtoJSON(c echo.Context, code int, i interface{}) error { return err } +var grpcBinder = &ProtoBinder{} + // GRPCProxyWrapper ... func GRPCProxyWrapper(h interface{}) echo.HandlerFunc { t := reflect.TypeOf(h) @@ -84,15 +85,10 @@ func GRPCProxyWrapper(h interface{}) echo.HandlerFunc { panic("reflect error: handler must be func") } - once := sync.Once{} - return func(c echo.Context) error { - once.Do(func() { - c.Echo().Binder = &ProtoBinder{} - }) var req = reflect.New(t.In(1).Elem()).Interface() - if err := c.Bind(req); err != nil { + if err := grpcBinder.Bind(req, c); err != nil { return ProtoError(c, http.StatusBadRequest, errBadRequest) }