From c6a393703304a3d55a37b11ad5feee5fe15cbe01 Mon Sep 17 00:00:00 2001 From: Yuxuan Li Date: Thu, 6 Apr 2017 14:30:59 -0700 Subject: [PATCH] fix send response error case --- server.go | 16 +++++++++++----- test/end2end_test.go | 4 ++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/server.go b/server.go index aa9d5c226..e457cdc96 100644 --- a/server.go +++ b/server.go @@ -794,12 +794,18 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. if err := s.sendResponse(t, stream, reply, s.opts.cp, opts); err != nil { // TODO: Translate error into a status.Status error if necessary? // TODO: Write status when appropriate. - switch e := err.(type) { - case status.Status: - if se := t.WriteStatus(stream, e); e != nil { - grpclog.Printf("grpc: Server.processUnaryRPC failed to write status %v", se) + s, ok := status.FromError(err) + if !ok { + // TODO: Parse possible non-status error + } else { + switch s.Code() { + case codes.InvalidArgument: + if e := t.WriteStatus(stream, s); e != nil { + grpclog.Printf("grpc: Server.processUnaryRPC failed to write status: %v", e) + } + // TODO: Add cases if needed + default: } - default: } return err } diff --git a/test/end2end_test.go b/test/end2end_test.go index c8773c603..eb3de446a 100644 --- a/test/end2end_test.go +++ b/test/end2end_test.go @@ -1423,8 +1423,8 @@ func testServiceConfigMaxMsgSize(t *testing.T, e env) { func TestMsgSizeDefaultAndAPI(t *testing.T) { defer leakCheck(t)() for _, e := range listTestEnv() { - // testMaxMsgSizeClientDefault(t, e) - // testMaxMsgSizeClientAPI(t, e) + testMaxMsgSizeClientDefault(t, e) + testMaxMsgSizeClientAPI(t, e) testMaxMsgSizeServerAPI(t, e) } }