From ae839db383b7b21544e20b33c4dd35d39e1a6b31 Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Mon, 22 Oct 2012 11:53:25 -0700 Subject: [PATCH] [#670] Intermittent IllegalStateException with ByteToMessageDecoder impl with bounded inbound buffer * Ensure to call discardReadBytes() before giving up expanding the buffer --- .../java/io/netty/channel/socket/aio/AioSocketChannel.java | 1 + .../io/netty/channel/socket/nio/AbstractNioByteChannel.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/transport/src/main/java/io/netty/channel/socket/aio/AioSocketChannel.java b/transport/src/main/java/io/netty/channel/socket/aio/AioSocketChannel.java index 5a726cf1cd..eafdce0883 100755 --- a/transport/src/main/java/io/netty/channel/socket/aio/AioSocketChannel.java +++ b/transport/src/main/java/io/netty/channel/socket/aio/AioSocketChannel.java @@ -192,6 +192,7 @@ public class AioSocketChannel extends AbstractAioChannel implements SocketChanne final int maxCapacity = byteBuf.maxCapacity(); if (capacity == maxCapacity) { + byteBuf.discardReadBytes(); return; } diff --git a/transport/src/main/java/io/netty/channel/socket/nio/AbstractNioByteChannel.java b/transport/src/main/java/io/netty/channel/socket/nio/AbstractNioByteChannel.java index d51cc6ce7a..7f8b9af4da 100755 --- a/transport/src/main/java/io/netty/channel/socket/nio/AbstractNioByteChannel.java +++ b/transport/src/main/java/io/netty/channel/socket/nio/AbstractNioByteChannel.java @@ -141,6 +141,10 @@ abstract class AbstractNioByteChannel extends AbstractNioChannel { final int maxCapacity = byteBuf.maxCapacity(); if (capacity == maxCapacity) { + if (byteBuf.readerIndex() != 0) { + byteBuf.discardReadBytes(); + return 0; + } return 2; }