From faf8b76b5a5487b0308ebe021f45461881b2c568 Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Fri, 19 Jul 2013 08:56:17 +0900 Subject: [PATCH] Fix a potential bug where AbstractUnsafe.flush0() fails to clear the inFlush0 flag - Fixes #1609 --- .../main/java/io/netty/channel/AbstractChannel.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/transport/src/main/java/io/netty/channel/AbstractChannel.java b/transport/src/main/java/io/netty/channel/AbstractChannel.java index ee36e6335c..c51cd072b4 100644 --- a/transport/src/main/java/io/netty/channel/AbstractChannel.java +++ b/transport/src/main/java/io/netty/channel/AbstractChannel.java @@ -651,12 +651,15 @@ public abstract class AbstractChannel extends DefaultAttributeMap implements Cha // Mark all pending write requests as failure if the channel is inactive. if (!isActive()) { - if (isOpen()) { - outboundBuffer.failFlushed(NOT_YET_CONNECTED_EXCEPTION); - } else { - outboundBuffer.failFlushed(CLOSED_CHANNEL_EXCEPTION); + try { + if (isOpen()) { + outboundBuffer.failFlushed(NOT_YET_CONNECTED_EXCEPTION); + } else { + outboundBuffer.failFlushed(CLOSED_CHANNEL_EXCEPTION); + } + } finally { + inFlush0 = false; } - inFlush0 = false; return; }