From 4a18a143d2907812f5ab6ddeaa99063ecabc5614 Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Sun, 11 Sep 2016 10:33:43 +0200 Subject: [PATCH] Only set lastReadTime if an read actually happened before in IdleStateHandler. Motivation: IdleStateHandler and ReadTimeoutHandler could mistakely not fire an event even if no channelRead(...) call happened. Modifications: Only set lastReadTime if a read happened before. Result: More correct IdleStateHandler / ReadTimeoutHandler. --- .../main/java/io/netty/handler/timeout/IdleStateHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handler/src/main/java/io/netty/handler/timeout/IdleStateHandler.java b/handler/src/main/java/io/netty/handler/timeout/IdleStateHandler.java index c58cd873e4..fec6f50095 100644 --- a/handler/src/main/java/io/netty/handler/timeout/IdleStateHandler.java +++ b/handler/src/main/java/io/netty/handler/timeout/IdleStateHandler.java @@ -268,7 +268,7 @@ public class IdleStateHandler extends ChannelDuplexHandler { @Override public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { - if (readerIdleTimeNanos > 0 || allIdleTimeNanos > 0) { + if ((readerIdleTimeNanos > 0 || allIdleTimeNanos > 0) && reading) { lastReadTime = System.nanoTime(); reading = false; }