From d80a732164583efc052869972e66ad2c0972e44b Mon Sep 17 00:00:00 2001 From: Uddeshya Singh Date: Mon, 1 Nov 2021 21:58:43 +0530 Subject: [PATCH 1/3] rpc_util: Change error message to indicate size after decompression --- rpc_util.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rpc_util.go b/rpc_util.go index 87987a2e652..8d0c67ac53a 100644 --- a/rpc_util.go +++ b/rpc_util.go @@ -570,7 +570,7 @@ func (p *parser) recvMsg(maxReceiveMessageSize int) (pf payloadFormat, msg []byt return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max length allowed on current machine (%d vs. %d)", length, maxInt) } if int(length) > maxReceiveMessageSize { - return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", length, maxReceiveMessageSize) + return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", length, maxReceiveMessageSize) } // TODO(bradfitz,zhaoq): garbage. reuse buffer after proto decoding instead // of making it for each message: From bedb5985480532d446c9f0389c288b3ef8614b66 Mon Sep 17 00:00:00 2001 From: Uddeshya Singh Date: Fri, 5 Nov 2021 13:23:11 +0530 Subject: [PATCH 2/3] rpc_util: Remove double checks for non compressed messages and change error message --- rpc_util.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rpc_util.go b/rpc_util.go index 8d0c67ac53a..4a77d56268b 100644 --- a/rpc_util.go +++ b/rpc_util.go @@ -570,7 +570,7 @@ func (p *parser) recvMsg(maxReceiveMessageSize int) (pf payloadFormat, msg []byt return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max length allowed on current machine (%d vs. %d)", length, maxInt) } if int(length) > maxReceiveMessageSize { - return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", length, maxReceiveMessageSize) + return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", length, maxReceiveMessageSize) } // TODO(bradfitz,zhaoq): garbage. reuse buffer after proto decoding instead // of making it for each message: @@ -712,14 +712,14 @@ func recvAndDecompress(p *parser, s *transport.Stream, dc Decompressor, maxRecei if err != nil { return nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message %v", err) } + if size > maxReceiveMessageSize { + // TODO: Revisit the error code. Currently keep it consistent with java + // implementation. + return nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", size, maxReceiveMessageSize) + } } else { size = len(d) } - if size > maxReceiveMessageSize { - // TODO: Revisit the error code. Currently keep it consistent with java - // implementation. - return nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", size, maxReceiveMessageSize) - } return d, nil } From 367ee676e8fdc67db1099e7579c8e1390eacc7a7 Mon Sep 17 00:00:00 2001 From: Uddeshya Singh Date: Thu, 11 Nov 2021 21:00:18 +0530 Subject: [PATCH 3/3] rpc_util: Fix vet errors --- rpc_util.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/rpc_util.go b/rpc_util.go index 4a77d56268b..5d407b004b0 100644 --- a/rpc_util.go +++ b/rpc_util.go @@ -717,8 +717,6 @@ func recvAndDecompress(p *parser, s *transport.Stream, dc Decompressor, maxRecei // implementation. return nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", size, maxReceiveMessageSize) } - } else { - size = len(d) } return d, nil }