From 0f6cc0cc7bcc546c124ed875d197f0333bca2da9 Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Mon, 22 Jul 2013 10:44:33 +0200 Subject: [PATCH] [#1630] Fix re-entrance bug in ChannelOutboundBuffer.remove(...) --- .../java/io/netty/channel/ChannelOutboundBuffer.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/transport/src/main/java/io/netty/channel/ChannelOutboundBuffer.java b/transport/src/main/java/io/netty/channel/ChannelOutboundBuffer.java index e98407e03a..daf411808a 100644 --- a/transport/src/main/java/io/netty/channel/ChannelOutboundBuffer.java +++ b/transport/src/main/java/io/netty/channel/ChannelOutboundBuffer.java @@ -342,10 +342,13 @@ public final class ChannelOutboundBuffer { promise.trySuccess(); flushedPromises[head] = null; - decrementPendingOutboundBytes(flushedPendingSizes[head]); + int size = flushedPendingSizes[head]; flushedPendingSizes[head] = 0; this.head = head + 1 & flushed.length - 1; + + decrementPendingOutboundBytes(size); + return true; } @@ -363,10 +366,12 @@ public final class ChannelOutboundBuffer { safeFail(flushedPromises[head], cause); flushedPromises[head] = null; - decrementPendingOutboundBytes(flushedPendingSizes[head]); + int size = flushedPendingSizes[head]; flushedPendingSizes[head] = 0; this.head = head + 1 & flushed.length - 1; + + decrementPendingOutboundBytes(size); return true; }