8b2fb2b985
Related: - 375b9e1307c83a648329711c02237b360d8e3cd5 Motivation: Even if a handler called ctx.fireChannelReadComplete(), the next handler should not get its channelReadComplete() invoked if fireChannelRead() was not invoked before. Modifications: - Ensure channelReadComplete() is invoked only when the handler of the current context actually produced a message, because otherwise there's no point of triggering channelReadComplete(). i.e. channelReadComplete() must follow channelRead(). - Fix a bug where ctx.read() was not called if the handler of the current context did not produce any message, making the connection stall. Read the new comment for more information. Result: - channelReadComplete() is invoked only when it makes sense. - No stale connection