From 18ac6f925f0e577794cccdee2746963e92a4d59e Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Thu, 27 Nov 2008 16:22:20 +0000 Subject: [PATCH] Fixed test failure --- .../org/jboss/netty/channel/socket/nio/NioWorker.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jboss/netty/channel/socket/nio/NioWorker.java b/src/main/java/org/jboss/netty/channel/socket/nio/NioWorker.java index 435cdba3fd..293b1acf1f 100644 --- a/src/main/java/org/jboss/netty/channel/socket/nio/NioWorker.java +++ b/src/main/java/org/jboss/netty/channel/socket/nio/NioWorker.java @@ -382,6 +382,12 @@ class NioWorker implements Runnable { if (worker != null) { Thread workerThread = worker.thread; if (workerThread != null && Thread.currentThread() != workerThread) { + if (!channel.isWritable()) { + // Will be written by the worker thread + // when the channel is ready to write. + return; + } + if (channel.writeTaskInTaskQueue.compareAndSet(false, true)) { worker.writeTaskQueue.offer(channel.writeTask); } @@ -716,8 +722,8 @@ class NioWorker implements Runnable { boolean bound = channel.isBound(); try { channel.socket.close(); - assert future == channel.getCloseFuture(); if (channel.setClosed()) { + future.setSuccess(); if (connected) { if (channel.getInterestOps() != Channel.OP_WRITE) { channel.setInterestOpsNow(Channel.OP_WRITE); @@ -731,6 +737,8 @@ class NioWorker implements Runnable { cleanUpWriteBuffer(channel); fireChannelClosed(channel); + } else { + future.setSuccess(); } } catch (Throwable t) { future.setFailure(t);