diff --git a/go16.go b/go16.go index 0e3a029f..73eb59fd 100644 --- a/go16.go +++ b/go16.go @@ -50,6 +50,9 @@ func toRPCErr(err error) error { if err == nil || err == io.EOF { return err } + if err == io.ErrUnexpectedEOF { + return status.Error(codes.Internal, err.Error()) + } if _, ok := status.FromError(err); ok { return err } diff --git a/go17.go b/go17.go index 486dd73f..5f9ab8c4 100644 --- a/go17.go +++ b/go17.go @@ -51,6 +51,9 @@ func toRPCErr(err error) error { if err == nil || err == io.EOF { return err } + if err == io.ErrUnexpectedEOF { + return status.Error(codes.Internal, err.Error()) + } if _, ok := status.FromError(err); ok { return err } diff --git a/rpc_util_test.go b/rpc_util_test.go index 6fbebdc3..a4ff9458 100644 --- a/rpc_util_test.go +++ b/rpc_util_test.go @@ -179,6 +179,7 @@ func TestToRPCErr(t *testing.T) { }{ {transport.StreamError{Code: codes.Unknown, Desc: ""}, status.Error(codes.Unknown, "")}, {transport.ErrConnClosing, status.Error(codes.Unavailable, transport.ErrConnClosing.Desc)}, + {io.ErrUnexpectedEOF, status.Error(codes.Internal, io.ErrUnexpectedEOF.Error())}, } { err := toRPCErr(test.errIn) if _, ok := status.FromError(err); !ok {