Add patch of NETTY-434 to the mix to fix Deadlock in

ChunkedWriteHandler. This patch was not written by me...
This commit is contained in:
Norman Maurer 2011-09-30 22:14:36 +02:00 committed by Trustin Lee
parent 6ee3286784
commit 509edd86f4

View File

@ -154,18 +154,20 @@ public class ChunkedWriteHandler implements ChannelUpstreamHandler, ChannelDowns
private void discard(ChannelHandlerContext ctx) { private void discard(ChannelHandlerContext ctx) {
ClosedChannelException cause = null; ClosedChannelException cause = null;
boolean fireExceptionCaught = false; boolean fireExceptionCaught = false;
synchronized (this) {
for (;;) { for (;;) {
if (currentEvent == null) { MessageEvent currentEvent = this.currentEvent;
if (this.currentEvent == null) {
currentEvent = queue.poll(); currentEvent = queue.poll();
} else {
this.currentEvent = null;
} }
if (currentEvent == null) { if (currentEvent == null) {
break; break;
} }
MessageEvent currentEvent = this.currentEvent;
this.currentEvent = null;
Object m = currentEvent.getMessage(); Object m = currentEvent.getMessage();
if (m instanceof ChunkedInput) { if (m instanceof ChunkedInput) {
@ -181,7 +183,7 @@ public class ChunkedWriteHandler implements ChannelUpstreamHandler, ChannelDowns
currentEvent = null; currentEvent = null;
} }
}
if (fireExceptionCaught) { if (fireExceptionCaught) {
Channels.fireExceptionCaught(ctx.getChannel(), cause); Channels.fireExceptionCaught(ctx.getChannel(), cause);