diff --git a/internal/transport/http2_client.go b/internal/transport/http2_client.go index 65b4ab2439e2..401ba881dffe 100644 --- a/internal/transport/http2_client.go +++ b/internal/transport/http2_client.go @@ -1485,7 +1485,7 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { case "grpc-status": code, err := strconv.ParseInt(hf.Value, 10, 32) if err != nil { - se := status.New(codes.Internal, fmt.Sprintf("transport: malformed grpc-status: %v", err)) + se := status.New(codes.Unknown, fmt.Sprintf("transport: malformed grpc-status: %v", err)) t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream) return } diff --git a/internal/transport/transport_test.go b/internal/transport/transport_test.go index 02cea39c3f73..dce898063468 100644 --- a/internal/transport/transport_test.go +++ b/internal/transport/transport_test.go @@ -2681,7 +2681,7 @@ func (s) TestClientDecodeHeader(t *testing.T) { }, }, wantStatus: status.New( - codes.Internal, + codes.Unknown, "transport: malformed grpc-status: strconv.ParseInt: parsing \"xxxx\": invalid syntax", ), }, @@ -2813,7 +2813,7 @@ func (s) TestClientDecodeTrailer(t *testing.T) { }, }, wantEndStreamStatus: status.New( - codes.Internal, + codes.Unknown, "transport: malformed grpc-status: strconv.ParseInt: parsing \"xxxx\": invalid syntax", ), }, diff --git a/test/http_header_end2end_test.go b/test/http_header_end2end_test.go index 595e7d9e015e..0f03f807d4f0 100644 --- a/test/http_header_end2end_test.go +++ b/test/http_header_end2end_test.go @@ -116,7 +116,7 @@ func (s) TestHTTPHeaderFrameErrorHandlingInitialHeader(t *testing.T) { "content-type", "application/grpc", "grpc-status", "abc", }, - errCode: codes.Internal, + errCode: codes.Unknown, }, { name: "Malformed grpc-tags-bin field ignores http status",