From d809046987a3bc5d3e7899d966b7263dfcbac099 Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Wed, 29 Apr 2009 01:08:05 +0000 Subject: [PATCH] Fixed ClosedChannelException caused by previous 'chunk end mark' fix --- .../HttpTunnelingClientSocketChannel.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/jboss/netty/channel/socket/http/HttpTunnelingClientSocketChannel.java b/src/main/java/org/jboss/netty/channel/socket/http/HttpTunnelingClientSocketChannel.java index 1f78d432e0..aa7015ddbd 100644 --- a/src/main/java/org/jboss/netty/channel/socket/http/HttpTunnelingClientSocketChannel.java +++ b/src/main/java/org/jboss/netty/channel/socket/http/HttpTunnelingClientSocketChannel.java @@ -212,18 +212,20 @@ class HttpTunnelingClientSocketChannel extends AbstractChannel } void closeSocket() { - // Send the end of chunk. - synchronized (writeLock) { - ChannelFuture future = channel.write(ChannelBuffers.copiedBuffer( - "0" + - HttpTunnelingClientSocketPipelineSink.LINE_TERMINATOR + - HttpTunnelingClientSocketPipelineSink.LINE_TERMINATOR, - "ASCII")); - future.awaitUninterruptibly(); + if (setClosed()) { + // Send the end of chunk. + synchronized (writeLock) { + ChannelFuture future = channel.write(ChannelBuffers.copiedBuffer( + "0" + + HttpTunnelingClientSocketPipelineSink.LINE_TERMINATOR + + HttpTunnelingClientSocketPipelineSink.LINE_TERMINATOR, + "ASCII")); + future.awaitUninterruptibly(); + } + + closed = true; + channel.close(); } - setClosed(); - closed = true; - channel.close(); } void bindSocket(SocketAddress localAddress) {