diff --git a/transport/src/main/java/io/netty/channel/nio/AbstractNioByteChannel.java b/transport/src/main/java/io/netty/channel/nio/AbstractNioByteChannel.java index 0eb790996c..0ce1f388ef 100755 --- a/transport/src/main/java/io/netty/channel/nio/AbstractNioByteChannel.java +++ b/transport/src/main/java/io/netty/channel/nio/AbstractNioByteChannel.java @@ -30,7 +30,7 @@ import java.nio.channels.SelectionKey; import java.nio.channels.WritableByteChannel; /** - * {@link io.netty.channel.nio.AbstractNioChannel} base class for {@link Channel}s that operate on bytes. + * {@link AbstractNioChannel} base class for {@link Channel}s that operate on bytes. */ public abstract class AbstractNioByteChannel extends AbstractNioChannel { @@ -56,7 +56,10 @@ public abstract class AbstractNioByteChannel extends AbstractNioChannel { public void read() { assert eventLoop().inEventLoop(); final SelectionKey key = selectionKey(); - key.interestOps(key.interestOps() & ~readInterestOp); + if (!config().isAutoRead()) { + // only remove readInterestOp if needed + key.interestOps(key.interestOps() & ~readInterestOp); + } final ChannelPipeline pipeline = pipeline(); final ByteBuf byteBuf = pipeline.inboundByteBuffer(); diff --git a/transport/src/main/java/io/netty/channel/nio/AbstractNioMessageChannel.java b/transport/src/main/java/io/netty/channel/nio/AbstractNioMessageChannel.java index 228e955937..c5117d0d67 100755 --- a/transport/src/main/java/io/netty/channel/nio/AbstractNioMessageChannel.java +++ b/transport/src/main/java/io/netty/channel/nio/AbstractNioMessageChannel.java @@ -24,7 +24,7 @@ import java.nio.channels.SelectableChannel; import java.nio.channels.SelectionKey; /** - * {@link io.netty.channel.nio.AbstractNioChannel} base class for {@link Channel}s that operate on messages. + * {@link AbstractNioChannel} base class for {@link Channel}s that operate on messages. */ public abstract class AbstractNioMessageChannel extends AbstractNioChannel { @@ -46,7 +46,10 @@ public abstract class AbstractNioMessageChannel extends AbstractNioChannel { public void read() { assert eventLoop().inEventLoop(); final SelectionKey key = selectionKey(); - key.interestOps(key.interestOps() & ~readInterestOp); + if (!config().isAutoRead()) { + // only remove readInterestOp if needed + key.interestOps(key.interestOps() & ~readInterestOp); + } final ChannelPipeline pipeline = pipeline(); final MessageBuf msgBuf = pipeline.inboundMessageBuffer();