fix send response error case

This commit is contained in:
Yuxuan Li 2017-04-06 14:30:59 -07:00
parent fa2968617c
commit c6a3937033
2 changed files with 13 additions and 7 deletions

View File

@ -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 { if err := s.sendResponse(t, stream, reply, s.opts.cp, opts); err != nil {
// TODO: Translate error into a status.Status error if necessary? // TODO: Translate error into a status.Status error if necessary?
// TODO: Write status when appropriate. // TODO: Write status when appropriate.
switch e := err.(type) { s, ok := status.FromError(err)
case status.Status: if !ok {
if se := t.WriteStatus(stream, e); e != nil { // TODO: Parse possible non-status error
grpclog.Printf("grpc: Server.processUnaryRPC failed to write status %v", se) } 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 return err
} }

View File

@ -1423,8 +1423,8 @@ func testServiceConfigMaxMsgSize(t *testing.T, e env) {
func TestMsgSizeDefaultAndAPI(t *testing.T) { func TestMsgSizeDefaultAndAPI(t *testing.T) {
defer leakCheck(t)() defer leakCheck(t)()
for _, e := range listTestEnv() { for _, e := range listTestEnv() {
// testMaxMsgSizeClientDefault(t, e) testMaxMsgSizeClientDefault(t, e)
// testMaxMsgSizeClientAPI(t, e) testMaxMsgSizeClientAPI(t, e)
testMaxMsgSizeServerAPI(t, e) testMaxMsgSizeServerAPI(t, e)
} }
} }