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 {
// 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
}

View File

@ -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)
}
}