diff --git a/src/main/java/com/rabbitmq/client/impl/Frame.java b/src/main/java/com/rabbitmq/client/impl/Frame.java index bf83c1cf5..f38e98db9 100644 --- a/src/main/java/com/rabbitmq/client/impl/Frame.java +++ b/src/main/java/com/rabbitmq/client/impl/Frame.java @@ -108,9 +108,9 @@ public static Frame readFrom(DataInputStream is, int maxPayloadSize) throws IOEx channel = is.readUnsignedShort(); int payloadSize = is.readInt(); - if (payloadSize >= maxPayloadSize) { - throw new IllegalStateException(format( - "Frame body is too large (%d), maximum configured size is %d. " + + if (payloadSize < 0 || payloadSize >= maxPayloadSize) { + throw new MalformedFrameException(format( + "Frame body size is invalid (%d), maximum configured size is %d. " + "See ConnectionFactory#setMaxInboundMessageBodySize " + "if you need to increase the limit.", payloadSize, maxPayloadSize diff --git a/src/main/java/com/rabbitmq/client/impl/NettyFrameHandlerFactory.java b/src/main/java/com/rabbitmq/client/impl/NettyFrameHandlerFactory.java index abac9151a..483265f3a 100644 --- a/src/main/java/com/rabbitmq/client/impl/NettyFrameHandlerFactory.java +++ b/src/main/java/com/rabbitmq/client/impl/NettyFrameHandlerFactory.java @@ -469,10 +469,10 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception int type = m.readUnsignedByte(); int channel = m.readUnsignedShort(); int payloadSize = m.readInt(); - if (payloadSize >= maxPayloadSize) { - throw new IllegalStateException( + if (payloadSize < 0 || payloadSize >= maxPayloadSize) { + throw new MalformedFrameException( format( - "Frame body is too large (%d), maximum configured size is %d. " + "Frame body size is invalid (%d), maximum configured size is %d. " + "See ConnectionFactory#setMaxInboundMessageBodySize " + "if you need to increase the limit.", payloadSize, maxPayloadSize));