From 1eec2718f9641b9cd525bc398345a352eacfc2df Mon Sep 17 00:00:00 2001 From: marshallbrekka Date: Mon, 2 Oct 2017 14:51:57 -0700 Subject: [PATCH 1/3] Use the new metadata methods. --- proxy/handler.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/proxy/handler.go b/proxy/handler.go index 2127026..a3c0d19 100644 --- a/proxy/handler.go +++ b/proxy/handler.go @@ -9,6 +9,7 @@ import ( "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/transport" ) @@ -70,6 +71,12 @@ func (s *handler) handler(srv interface{}, serverStream grpc.ServerStream) error if err != nil { return err } + + incomingMD, ok := metadata.FromIncomingContext(clientCtx) + if ok { + clientCtx = metadata.NewOutgoingContext(clientCtx, incomingMD) + } + // TODO(mwitkow): Add a `forwarded` header to metadata, https://en.wikipedia.org/wiki/X-Forwarded-For. clientStream, err := grpc.NewClientStream(clientCtx, clientStreamDescForProxying, backendConn, fullMethodName) if err != nil { From 2555aec3ddbfed4dd0e4ce021480060c1ed23ea9 Mon Sep 17 00:00:00 2001 From: Jack Wink Date: Mon, 23 Apr 2018 15:40:55 -0700 Subject: [PATCH 2/3] Update gRPC and fix tests Combines the two open PRs so the tests pass and we don't depend on outdated gRPC internals. --- proxy/handler.go | 4 +--- proxy/handler_test.go | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/proxy/handler.go b/proxy/handler.go index 83920f1..9d71187 100644 --- a/proxy/handler.go +++ b/proxy/handler.go @@ -9,7 +9,6 @@ import ( "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" - "google.golang.org/grpc/transport" ) var ( @@ -60,11 +59,10 @@ type handler struct { // forwarding it to a ClientStream established against the relevant ClientConn. func (s *handler) handler(srv interface{}, serverStream grpc.ServerStream) error { // little bit of gRPC internals never hurt anyone - lowLevelServerStream, ok := transport.StreamFromContext(serverStream.Context()) + fullMethodName, ok := grpc.MethodFromServerStream(serverStream) if !ok { return grpc.Errorf(codes.Internal, "lowLevelServerStream not exists in context") } - fullMethodName := lowLevelServerStream.Method() // We require that the director's returned context inherits from the serverStream.Context(). outgoingCtx, backendConn, err := s.director(serverStream.Context(), fullMethodName) clientCtx, clientCancel := context.WithCancel(outgoingCtx) diff --git a/proxy/handler_test.go b/proxy/handler_test.go index 7cb55e7..c811408 100644 --- a/proxy/handler_test.go +++ b/proxy/handler_test.go @@ -135,7 +135,7 @@ func (s *ProxyHappySuite) TestPingCarriesServerHeadersAndTrailers() { out, err := s.testClient.Ping(s.ctx(), &pb.PingRequest{Value: "foo"}, grpc.Header(&headerMd), grpc.Trailer(&trailerMd)) require.NoError(s.T(), err, "Ping should succeed without errors") require.Equal(s.T(), &pb.PingResponse{Value: "foo", Counter: 42}, out) - assert.Len(s.T(), headerMd, 1, "server response headers must contain server data") + assert.Contains(s.T(), headerMd, serverHeaderMdKey, "server response headers must contain server data") assert.Len(s.T(), trailerMd, 1, "server response trailers must contain server data") } @@ -170,7 +170,7 @@ func (s *ProxyHappySuite) TestPingStream_FullDuplexWorks() { // Check that the header arrives before all entries. headerMd, err := stream.Header() require.NoError(s.T(), err, "PingStream headers should not error.") - assert.Len(s.T(), headerMd, 1, "PingStream response headers user contain metadata") + assert.Contains(s.T(), headerMd, serverHeaderMdKey, "PingStream response headers user contain metadata") } assert.EqualValues(s.T(), i, resp.Counter, "ping roundtrip must succeed with the correct id") } From 4b45e97dcd90f6f01841b33bc6deb090f74cd7f0 Mon Sep 17 00:00:00 2001 From: fedeberco Date: Wed, 3 Feb 2021 14:46:54 -0300 Subject: [PATCH 3/3] Revert "Merge branch 'master' into bugfix/jack/grpc-updates" This reverts commit d8d18404f6ffe42995ef97ffc25b31f48a846022, reversing changes made to 2555aec3ddbfed4dd0e4ce021480060c1ed23ea9. --- proxy/handler.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/proxy/handler.go b/proxy/handler.go index 85d35d8..9d71187 100644 --- a/proxy/handler.go +++ b/proxy/handler.go @@ -9,8 +9,6 @@ import ( "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/transport" ) var ( @@ -71,12 +69,6 @@ func (s *handler) handler(srv interface{}, serverStream grpc.ServerStream) error if err != nil { return err } - - incomingMD, ok := metadata.FromIncomingContext(clientCtx) - if ok { - clientCtx = metadata.NewOutgoingContext(clientCtx, incomingMD) - } - // TODO(mwitkow): Add a `forwarded` header to metadata, https://en.wikipedia.org/wiki/X-Forwarded-For. clientStream, err := grpc.NewClientStream(clientCtx, clientStreamDescForProxying, backendConn, fullMethodName) if err != nil {