You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2016/08/17 13:45:01 UTC

mina git commit: o Updated the writeRequests future when the session is destroyed, to avoid blocking it forever(DIRMINA-1041) o Replaced the session.close(true/false) by session.closeNoex() and session.closeOnFlush() o Removed some useless imports o Fixe

Repository: mina
Updated Branches:
  refs/heads/2.0 64bbf3394 -> b1661ec24


o Updated the writeRequests future when the session is destroyed, to
avoid blocking it forever(DIRMINA-1041)
o Replaced the session.close(true/false) by session.closeNoex() and
session.closeOnFlush()
o Removed some useless imports
o Fixed the SslTest that was closing the session immediately instead of
doing it after having flushed the messages
o Used the AvailablePortFinder instead of defining a port using a
ServerSocket


Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/b1661ec2
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/b1661ec2
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/b1661ec2

Branch: refs/heads/2.0
Commit: b1661ec24e82a1fa7ce66fc88805a201ec055630
Parents: 64bbf33
Author: Emmanuel L�charny <el...@symas.com>
Authored: Wed Aug 17 15:44:39 2016 +0200
Committer: Emmanuel L�charny <el...@symas.com>
Committed: Wed Aug 17 15:44:39 2016 +0200

----------------------------------------------------------------------
 .../mina/core/future/IoFutureListener.java      |  2 +-
 .../mina/core/service/AbstractIoConnector.java  |  2 +-
 .../mina/core/service/IoHandlerAdapter.java     |  2 +-
 .../core/service/IoServiceListenerSupport.java  |  2 +-
 .../mina/core/session/AbstractIoSession.java    |  8 ++++++-
 .../core/session/ExpiringSessionRecycler.java   |  2 +-
 .../ObjectSerializationOutputStream.java        |  1 -
 .../mina/filter/firewall/BlacklistFilter.java   |  2 +-
 .../firewall/ConnectionThrottleFilter.java      |  2 +-
 .../KeepAliveRequestTimeoutHandler.java         |  2 +-
 .../mina/handler/demux/ExceptionHandler.java    |  2 +-
 .../handler/stream/IoSessionOutputStream.java   |  2 +-
 .../mina/handler/stream/StreamIoHandler.java    |  2 +-
 .../mina/proxy/AbstractProxyLogicHandler.java   |  2 +-
 .../core/service/AbstractIoServiceTest.java     |  2 +-
 .../filter/keepalive/KeepAliveFilterTest.java   |  2 +-
 .../filter/logging/MdcInjectionFilterTest.java  |  2 +-
 .../org/apache/mina/filter/ssl/SslTest.java     |  2 +-
 .../stream/AbstractStreamWriteFilterTest.java   |  4 ++--
 .../apache/mina/transport/AbstractBindTest.java |  2 +-
 .../mina/transport/AbstractConnectorTest.java   |  4 ++--
 .../mina/transport/AbstractFileRegionTest.java  |  6 ++---
 .../transport/AbstractTrafficControlTest.java   |  2 +-
 .../transport/socket/nio/DIRMINA1041Test.java   | 17 ++-----------
 .../transport/socket/nio/DIRMINA777Test.java    | 15 ++----------
 .../socket/nio/DatagramConfigTest.java          |  2 +-
 .../socket/nio/DatagramRecyclerTest.java        |  8 +++----
 .../transport/vmpipe/VmPipeEventOrderTest.java  |  6 ++---
 .../test/java/testcase/MinaRegressionTest.java  |  2 +-
 .../src/test/java/testcase/MyIoHandler.java     |  4 ++--
 .../test/java/testcase/MyRequestDecoder.java    |  4 ++--
 .../mina/example/chat/ChatProtocolHandler.java  |  6 ++---
 .../example/chat/client/ChatClientSupport.java  | 10 ++++++--
 .../timeserver/TimeServerHandler.java           |  2 +-
 .../imagine/step1/client/ImageClient.java       |  2 +-
 .../example/netcat/NetCatProtocolHandler.java   |  2 +-
 .../example/proxy/AbstractProxyIoHandler.java   |  2 +-
 .../example/proxy/ClientToProxyIoHandler.java   |  2 +-
 .../reverser/ReverseProtocolHandler.java        |  2 +-
 .../example/sumup/ClientSessionHandler.java     |  6 ++---
 .../example/sumup/ServerSessionHandler.java     |  4 ++--
 .../example/tapedeck/AuthenticationHandler.java |  2 +-
 .../mina/example/tapedeck/TapeDeckServer.java   |  2 +-
 .../mina/example/tennis/TennisPlayer.java       |  4 ++--
 .../mina/example/udp/MemoryMonitorHandler.java  |  2 +-
 .../apache/mina/example/udp/perf/UdpClient.java |  1 -
 .../apache/mina/example/udp/perf/UdpServer.java |  2 +-
 .../mina/example/echoserver/ConnectorTest.java  | 25 +++++++-------------
 .../example/echoserver/ssl/SslFilterTest.java   |  2 +-
 .../example/proxy/ClientSessionHandler.java     |  2 +-
 .../proxy/telnet/TelnetSessionHandler.java      |  4 ++--
 51 files changed, 89 insertions(+), 112 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/core/future/IoFutureListener.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/future/IoFutureListener.java b/mina-core/src/main/java/org/apache/mina/core/future/IoFutureListener.java
index d0c71e7..851f1f9 100644
--- a/mina-core/src/main/java/org/apache/mina/core/future/IoFutureListener.java
+++ b/mina-core/src/main/java/org/apache/mina/core/future/IoFutureListener.java
@@ -36,7 +36,7 @@ public interface IoFutureListener<F extends IoFuture> extends EventListener {
      */
     IoFutureListener<IoFuture> CLOSE = new IoFutureListener<IoFuture>() {
         public void operationComplete(IoFuture future) {
-            future.getSession().close(true);
+            future.getSession().closeNow();
         }
     };
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java b/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
index fa17dbb..57170a2 100644
--- a/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
+++ b/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
@@ -293,7 +293,7 @@ public abstract class AbstractIoConnector extends AbstractIoService implements I
         future.addListener(new IoFutureListener<ConnectFuture>() {
             public void operationComplete(ConnectFuture future) {
                 if (future.isCanceled()) {
-                    session.close(true);
+                    session.closeNow();
                 }
             }
         });

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/core/service/IoHandlerAdapter.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/service/IoHandlerAdapter.java b/mina-core/src/main/java/org/apache/mina/core/service/IoHandlerAdapter.java
index 2d1b451..33c0dcd 100644
--- a/mina-core/src/main/java/org/apache/mina/core/service/IoHandlerAdapter.java
+++ b/mina-core/src/main/java/org/apache/mina/core/service/IoHandlerAdapter.java
@@ -90,6 +90,6 @@ public class IoHandlerAdapter implements IoHandler {
      * {@inheritDoc}
      */
     public void inputClosed(IoSession session) throws Exception {
-        session.close(true);
+        session.closeNow();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java b/mina-core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
index cd50163..fbdfa4f 100644
--- a/mina-core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
+++ b/mina-core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
@@ -288,7 +288,7 @@ public class IoServiceListenerSupport {
         IoFutureListener<IoFuture> listener = new LockNotifyingListener(lock);
 
         for (IoSession s : managedSessions.values()) {
-            s.close(true).addListener(listener);
+            s.closeNow().addListener(listener);
         }
 
         try {

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java b/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
index 2addbac..316d978 100644
--- a/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
+++ b/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
@@ -357,6 +357,12 @@ public abstract class AbstractIoSession implements IoSession {
      *
      */
     protected void destroy() throws Exception {
+        if (writeRequestQueue != null) {
+            while (!writeRequestQueue.isEmpty(this)) {
+                WriteRequest writeRequest = writeRequestQueue.poll(this);
+                writeRequest.getFuture().setWritten();
+            }
+        }
     }
 
     /**
@@ -1401,7 +1407,7 @@ public abstract class AbstractIoSession implements IoSession {
                 request.getFuture().setException(cause);
                 session.getFilterChain().fireExceptionCaught(cause);
                 // WriteException is an IOException, so we close the session.
-                session.close(true);
+                session.closeNow();
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/core/session/ExpiringSessionRecycler.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/session/ExpiringSessionRecycler.java b/mina-core/src/main/java/org/apache/mina/core/session/ExpiringSessionRecycler.java
index 5c5bfce..f38f499 100644
--- a/mina-core/src/main/java/org/apache/mina/core/session/ExpiringSessionRecycler.java
+++ b/mina-core/src/main/java/org/apache/mina/core/session/ExpiringSessionRecycler.java
@@ -99,7 +99,7 @@ public class ExpiringSessionRecycler implements IoSessionRecycler {
 
     private class DefaultExpirationListener implements ExpirationListener<IoSession> {
         public void expired(IoSession expiredSession) {
-            expiredSession.close(true);
+            expiredSession.closeNow();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java
index eea063c..8243e75 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java
@@ -21,7 +21,6 @@ package org.apache.mina.filter.codec.serialization;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.ObjectOutput;
 import java.io.OutputStream;
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java b/mina-core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java
index 5126d35..effd6e2 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java
@@ -240,7 +240,7 @@ public class BlacklistFilter extends IoFilterAdapter {
 
     private void blockSession(IoSession session) {
         LOGGER.warn("Remote address in the blacklist; closing.");
-        session.close(true);
+        session.closeNow();
     }
 
     private boolean isBlocked(IoSession session) {

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java b/mina-core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java
index 48836f7..11a631f 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java
@@ -193,7 +193,7 @@ public class ConnectionThrottleFilter extends IoFilterAdapter {
     public void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
         if (!isConnectionOk(session)) {
             LOGGER.warn("Connections coming in too fast; closing.");
-            session.close(true);
+            session.closeNow();
         }
 
         nextFilter.sessionCreated(session);

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveRequestTimeoutHandler.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveRequestTimeoutHandler.java b/mina-core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveRequestTimeoutHandler.java
index eae4910..663a1f9 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveRequestTimeoutHandler.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveRequestTimeoutHandler.java
@@ -70,7 +70,7 @@ public interface KeepAliveRequestTimeoutHandler {
         public void keepAliveRequestTimedOut(KeepAliveFilter filter, IoSession session) throws Exception {
             LOGGER.warn("Closing the session because a keep-alive response "
                     + "message was not received within {} second(s).", filter.getRequestTimeout());
-            session.close(true);
+            session.closeNow();
         }
     };
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/handler/demux/ExceptionHandler.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/handler/demux/ExceptionHandler.java b/mina-core/src/main/java/org/apache/mina/handler/demux/ExceptionHandler.java
index 05a2b5d..059b3f7 100644
--- a/mina-core/src/main/java/org/apache/mina/handler/demux/ExceptionHandler.java
+++ b/mina-core/src/main/java/org/apache/mina/handler/demux/ExceptionHandler.java
@@ -47,7 +47,7 @@ public interface ExceptionHandler<E extends Throwable> {
      */
     ExceptionHandler<Throwable> CLOSE = new ExceptionHandler<Throwable>() {
         public void exceptionCaught(IoSession session, Throwable cause) {
-            session.close(true);
+            session.closeNow();
         }
     };
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/handler/stream/IoSessionOutputStream.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/handler/stream/IoSessionOutputStream.java b/mina-core/src/main/java/org/apache/mina/handler/stream/IoSessionOutputStream.java
index 9aa42b6..c5213a5 100644
--- a/mina-core/src/main/java/org/apache/mina/handler/stream/IoSessionOutputStream.java
+++ b/mina-core/src/main/java/org/apache/mina/handler/stream/IoSessionOutputStream.java
@@ -46,7 +46,7 @@ class IoSessionOutputStream extends OutputStream {
         try {
             flush();
         } finally {
-            session.close(true).awaitUninterruptibly();
+            session.closeNow().awaitUninterruptibly();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java b/mina-core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
index 7715581..3a18f6d 100644
--- a/mina-core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
+++ b/mina-core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
@@ -162,7 +162,7 @@ public abstract class StreamIoHandler extends IoHandlerAdapter {
             in.throwException(e);
         } else {
             LOGGER.warn("Unexpected exception.", cause);
-            session.close(true);
+            session.closeNow();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/main/java/org/apache/mina/proxy/AbstractProxyLogicHandler.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/proxy/AbstractProxyLogicHandler.java b/mina-core/src/main/java/org/apache/mina/proxy/AbstractProxyLogicHandler.java
index d92fc7d..6749a83 100644
--- a/mina-core/src/main/java/org/apache/mina/proxy/AbstractProxyLogicHandler.java
+++ b/mina-core/src/main/java/org/apache/mina/proxy/AbstractProxyLogicHandler.java
@@ -192,7 +192,7 @@ public abstract class AbstractProxyLogicHandler implements ProxyLogicHandler {
             LOGGER.error(message);
         }
 
-        getSession().close(true);
+        getSession().closeNow();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceTest.java b/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceTest.java
index 7d9192b..2d70f8e 100644
--- a/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceTest.java
+++ b/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceTest.java
@@ -92,7 +92,7 @@ public class AbstractIoServiceTest {
         latch.await();
 
         // close the session
-        CloseFuture closeFuture = session.close(false);
+        CloseFuture closeFuture = session.closeOnFlush();
 
         System.out.println("session.close called");
         //Thread.sleep(5);

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/filter/keepalive/KeepAliveFilterTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/filter/keepalive/KeepAliveFilterTest.java b/mina-core/src/test/java/org/apache/mina/filter/keepalive/KeepAliveFilterTest.java
index f81a827..8abe8f0 100644
--- a/mina-core/src/test/java/org/apache/mina/filter/keepalive/KeepAliveFilterTest.java
+++ b/mina-core/src/test/java/org/apache/mina/filter/keepalive/KeepAliveFilterTest.java
@@ -124,7 +124,7 @@ public class KeepAliveFilterTest {
 
         assertFalse("got an exception on the client", gotException.get());
 
-        session.close(true);
+        session.closeNow();
         connector.dispose();
     }
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java b/mina-core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java
index 1e747ba..77d0181 100644
--- a/mina-core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java
+++ b/mina-core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java
@@ -380,7 +380,7 @@ public class MdcInjectionFilterTest {
         public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
             LOGGER.info("sessionIdle");
             sessionIdleLatch.countDown();
-            session.close(true);
+            session.closeNow();
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/filter/ssl/SslTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/filter/ssl/SslTest.java b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslTest.java
index 865fbb3..840ea4e 100644
--- a/mina-core/src/test/java/org/apache/mina/filter/ssl/SslTest.java
+++ b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslTest.java
@@ -86,7 +86,7 @@ public class SslTest {
                 }
                     
                 session.write(sb.toString());
-                session.close(true);
+                session.closeOnFlush();
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/filter/stream/AbstractStreamWriteFilterTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/filter/stream/AbstractStreamWriteFilterTest.java b/mina-core/src/test/java/org/apache/mina/filter/stream/AbstractStreamWriteFilterTest.java
index be22f91..74cb37b 100644
--- a/mina-core/src/test/java/org/apache/mina/filter/stream/AbstractStreamWriteFilterTest.java
+++ b/mina-core/src/test/java/org/apache/mina/filter/stream/AbstractStreamWriteFilterTest.java
@@ -434,7 +434,7 @@ public abstract class AbstractStreamWriteFilterTest<M, U extends AbstractStreamW
         @Override
         public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
             LOGGER.info("ReceiverHandler: sessionIdle");
-            session.close(true);
+            session.closeNow();
         }
 
         @Override
@@ -459,7 +459,7 @@ public abstract class AbstractStreamWriteFilterTest<M, U extends AbstractStreamW
             }
             LOGGER.info("messageReceived: bytesRead = {}", bytesRead);
             if (bytesRead >= size) {
-                session.close(true);
+                session.closeNow();
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/transport/AbstractBindTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/transport/AbstractBindTest.java b/mina-core/src/test/java/org/apache/mina/transport/AbstractBindTest.java
index c093c27..a1c3d98 100644
--- a/mina-core/src/test/java/org/apache/mina/transport/AbstractBindTest.java
+++ b/mina-core/src/test/java/org/apache/mina/transport/AbstractBindTest.java
@@ -286,7 +286,7 @@ public abstract class AbstractBindTest {
         @Override
         public void exceptionCaught(IoSession session, Throwable cause) {
             //cause.printStackTrace();
-            session.close(true);
+            session.closeNow();
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java b/mina-core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
index 67976ec..a377b51 100644
--- a/mina-core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
+++ b/mina-core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
@@ -80,7 +80,7 @@ public abstract class AbstractConnectorTest {
             ConnectFuture future = connector.connect(new InetSocketAddress("localhost", port));
             future.awaitUninterruptibly();
             buf.append("3");
-            future.getSession().close(true);
+            future.getSession().closeNow();
             // sessionCreated() will fire before the connect future completes
             // but sessionOpened() may not
             assertTrue(Pattern.matches("12?32?", buf.toString()));
@@ -117,7 +117,7 @@ public abstract class AbstractConnectorTest {
             future.awaitUninterruptibly();
             buf.append("1");
             try {
-                future.getSession().close(true);
+                future.getSession().closeNow();
                 fail();
             } catch (RuntimeIoException e) {
                 // Signifies a successful test execution

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/transport/AbstractFileRegionTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/transport/AbstractFileRegionTest.java b/mina-core/src/test/java/org/apache/mina/transport/AbstractFileRegionTest.java
index e9d4b59..7c3d825 100644
--- a/mina-core/src/test/java/org/apache/mina/transport/AbstractFileRegionTest.java
+++ b/mina-core/src/test/java/org/apache/mina/transport/AbstractFileRegionTest.java
@@ -73,7 +73,7 @@ public abstract class AbstractFileRegionTest {
                 @Override
                 public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
                     exception[0] = cause;
-                    session.close(true);
+                    session.closeNow();
                 }
 
                 @Override
@@ -92,7 +92,7 @@ public abstract class AbstractFileRegionTest {
                     }
                     if (index == FILE_SIZE / 4) {
                         success[0] = true;
-                        session.close(true);
+                        session.closeNow();
                     }
                 }
             });
@@ -105,7 +105,7 @@ public abstract class AbstractFileRegionTest {
                 @Override
                 public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
                     exception[0] = cause;
-                    session.close(true);
+                    session.closeNow();
                 }
 
                 @Override

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/transport/AbstractTrafficControlTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/transport/AbstractTrafficControlTest.java b/mina-core/src/test/java/org/apache/mina/transport/AbstractTrafficControlTest.java
index f2059e5..9a63349 100644
--- a/mina-core/src/test/java/org/apache/mina/transport/AbstractTrafficControlTest.java
+++ b/mina-core/src/test/java/org/apache/mina/transport/AbstractTrafficControlTest.java
@@ -163,7 +163,7 @@ public abstract class AbstractTrafficControlTest {
 
         }
 
-        session.close(true).awaitUninterruptibly();
+        session.closeNow().awaitUninterruptibly();
     }
 
     private void write(IoSession session, String s) throws Exception {

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java
index 87974ee..4f70106 100644
--- a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java
+++ b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java
@@ -1,6 +1,5 @@
 package org.apache.mina.transport.socket.nio;
 
-import org.apache.log4j.net.SocketServer;
 import org.apache.mina.core.future.CloseFuture;
 import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.future.WriteFuture;
@@ -10,6 +9,7 @@ import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
 import org.apache.mina.transport.socket.SocketAcceptor;
 import org.apache.mina.transport.socket.SocketConnector;
+import org.apache.mina.util.AvailablePortFinder;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -17,30 +17,17 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
 import java.net.InetSocketAddress;
-import java.net.ServerSocket;
 
 public class DIRMINA1041Test {
 
     private static final Logger LOG = LoggerFactory.getLogger(DIRMINA1041Test.class);
     private static final String HOST = "localhost";
-    private static int PORT; 
+    private static final int PORT = AvailablePortFinder.getNextAvailable(); 
     private static final long TIMEOUT = 3000L;
     private SocketAcceptor acceptor;
     private SocketConnector connector;
     
-    static {
-        try {
-            ServerSocket serverSocket = new ServerSocket(0);
-            PORT = serverSocket.getLocalPort();
-            serverSocket.close();
-            
-        } catch (IOException ioe) {
-            
-        }
-    }
-
     @Before
     public void setUp() throws Exception {
         acceptor = new NioSocketAcceptor();

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA777Test.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA777Test.java b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA777Test.java
index 17b967c..031b74b 100644
--- a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA777Test.java
+++ b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA777Test.java
@@ -21,9 +21,7 @@ package org.apache.mina.transport.socket.nio;
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.IOException;
 import java.net.InetSocketAddress;
-import java.net.ServerSocket;
 
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.future.ConnectFuture;
@@ -31,6 +29,7 @@ import org.apache.mina.core.future.ReadFuture;
 import org.apache.mina.core.service.IoConnector;
 import org.apache.mina.core.service.IoHandlerAdapter;
 import org.apache.mina.core.session.IoSession;
+import org.apache.mina.util.AvailablePortFinder;
 import org.junit.Test;
 
 /**
@@ -42,17 +41,7 @@ public class DIRMINA777Test {
 
     @Test
     public void checkReadFuture() throws Throwable {
-        int port = 0;
-        
-        try {
-            ServerSocket serverSocket = new ServerSocket(0);
-            port = serverSocket.getLocalPort();
-            serverSocket.close();
-            
-        } catch (IOException ioe) {
-            
-        }
-
+        int port = AvailablePortFinder.getNextAvailable();
         NioSocketAcceptor acceptor = new NioSocketAcceptor();
         acceptor.setReuseAddress(true);
         acceptor.setHandler(new IoHandlerAdapter() {

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramConfigTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramConfigTest.java b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramConfigTest.java
index 4845a6e..b99fd30 100644
--- a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramConfigTest.java
+++ b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramConfigTest.java
@@ -87,7 +87,7 @@ public class DatagramConfigTest {
             writeFuture.awaitUninterruptibly();
             assertTrue(writeFuture.isWritten());
 
-            future.getSession().close(true);
+            future.getSession().closeNow();
 
             for (int i = 0; i < 30; i++) {
                 if (result.length() == 2) {

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramRecyclerTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramRecyclerTest.java b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramRecyclerTest.java
index 975a44d..3842708 100644
--- a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramRecyclerTest.java
+++ b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DatagramRecyclerTest.java
@@ -86,7 +86,7 @@ public class DatagramRecyclerTest {
             // Close the client-side connection.
             // This doesn't mean that the acceptor-side connection is also closed.
             // The life cycle of the acceptor-side connection is managed by the recycler.
-            future.getSession().close(true);
+            future.getSession().closeNow();
             future.getSession().getCloseFuture().awaitUninterruptibly();
             assertTrue(future.getSession().getCloseFuture().isClosed());
 
@@ -133,7 +133,7 @@ public class DatagramRecyclerTest {
             while (acceptorHandler.session == null) {
                 Thread.yield();
             }
-            acceptorHandler.session.close(true);
+            acceptorHandler.session.closeNow();
             assertTrue(acceptorHandler.session.getCloseFuture().awaitUninterruptibly(3000));
 
             IoSession oldSession = acceptorHandler.session;
@@ -157,10 +157,10 @@ public class DatagramRecyclerTest {
             while (acceptorHandler.session == null) {
                 Thread.yield();
             }
-            acceptorHandler.session.close(true);
+            acceptorHandler.session.closeNow();
             assertTrue(acceptorHandler.session.getCloseFuture().awaitUninterruptibly(3000));
 
-            future.getSession().close(true).awaitUninterruptibly();
+            future.getSession().closeNow().awaitUninterruptibly();
 
             assertNotSame(oldSession, acceptorHandler.session);
         } finally {

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeEventOrderTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeEventOrderTest.java b/mina-core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeEventOrderTest.java
index b5e3865..576c71f 100644
--- a/mina-core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeEventOrderTest.java
+++ b/mina-core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeEventOrderTest.java
@@ -52,7 +52,7 @@ public class VmPipeEventOrderTest {
 
             @Override
             public void messageSent(IoSession session, Object message) throws Exception {
-                session.close(true);
+                session.closeNow();
             }
         });
 
@@ -130,7 +130,7 @@ public class VmPipeEventOrderTest {
 
             @Override
             public void messageSent(IoSession session, Object message) throws Exception {
-                session.close(true);
+                session.closeNow();
             }
         });
 
@@ -191,7 +191,7 @@ public class VmPipeEventOrderTest {
         ConnectFuture connectFuture = vmPipeConnector.connect(vmPipeAddress);
         connectFuture.awaitUninterruptibly();
         connectFuture.getSession().write(IoBuffer.wrap(new byte[1])).awaitUninterruptibly();
-        connectFuture.getSession().close(false).awaitUninterruptibly();
+        connectFuture.getSession().closeOnFlush().awaitUninterruptibly();
 
         semaphore.tryAcquire(1, TimeUnit.SECONDS);
         vmPipeAcceptor.unbind(vmPipeAddress);

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/testcase/MinaRegressionTest.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/testcase/MinaRegressionTest.java b/mina-core/src/test/java/testcase/MinaRegressionTest.java
index 24826c3..ca72945 100644
--- a/mina-core/src/test/java/testcase/MinaRegressionTest.java
+++ b/mina-core/src/test/java/testcase/MinaRegressionTest.java
@@ -142,7 +142,7 @@ public class MinaRegressionTest extends IoHandlerAdapter {
         } else {
             logger.info("I/O error: " + cause.getMessage());
         }
-        session.close(true);
+        session.closeNow();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/testcase/MyIoHandler.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/testcase/MyIoHandler.java b/mina-core/src/test/java/testcase/MyIoHandler.java
index 6d600bd..88b9704 100644
--- a/mina-core/src/test/java/testcase/MyIoHandler.java
+++ b/mina-core/src/test/java/testcase/MyIoHandler.java
@@ -55,7 +55,7 @@ public class MyIoHandler extends IoHandlerAdapter {
         } else {
             logger.info("I/O error: " + cause.getMessage());
         }
-        session.close(true);
+        session.closeNow();
     }
 
     @Override
@@ -104,6 +104,6 @@ public class MyIoHandler extends IoHandlerAdapter {
             }
         }
 
-        session.close(true);
+        session.closeNow();
     }
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-core/src/test/java/testcase/MyRequestDecoder.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/testcase/MyRequestDecoder.java b/mina-core/src/test/java/testcase/MyRequestDecoder.java
index 2e31a06..8cb562a 100644
--- a/mina-core/src/test/java/testcase/MyRequestDecoder.java
+++ b/mina-core/src/test/java/testcase/MyRequestDecoder.java
@@ -49,11 +49,11 @@ public class MyRequestDecoder extends CumulativeProtocolDecoder {
                     logger.debug("Wake up now from a 500 ms sleep for session {}", session.getId());
                 } catch (InterruptedException ignore) {
                 }
-                session.close(true);
+                session.closeNow();
             }
         }).start();
 
-        // sleep so that session.close(true) is already called when decoding continues
+        // sleep so that session.closeNow() is already called when decoding continues
         logger.debug("Sleep for 1000 ms for session {}", session.getId());
         Thread.sleep(1000);
         logger.debug("Wake up now from a 1000 ms sleep for session {}", session.getId());

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/chat/ChatProtocolHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/chat/ChatProtocolHandler.java b/mina-example/src/main/java/org/apache/mina/example/chat/ChatProtocolHandler.java
index 8f9bf4a..5182e32 100644
--- a/mina-example/src/main/java/org/apache/mina/example/chat/ChatProtocolHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/chat/ChatProtocolHandler.java
@@ -48,7 +48,7 @@ public class ChatProtocolHandler extends IoHandlerAdapter {
     public void exceptionCaught(IoSession session, Throwable cause) {
         LOGGER.warn("Unexpected exception.", cause);
         // Close connection when unexpected exception is caught.
-        session.close(true);
+        session.closeNow();
     }
 
     @Override
@@ -68,7 +68,7 @@ public class ChatProtocolHandler extends IoHandlerAdapter {
 
             case ChatCommand.QUIT:
                 session.write("QUIT OK");
-                session.close(true);
+                session.closeNow();
                 break;
             case ChatCommand.LOGIN:
 
@@ -148,7 +148,7 @@ public class ChatProtocolHandler extends IoHandlerAdapter {
         synchronized (sessions) {
             for (IoSession session : sessions) {
                 if (name.equals(session.getAttribute("user"))) {
-                    session.close(true);
+                    session.closeNow();
                     break;
                 }
             }

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
index f0bdf65..7527c91 100644
--- a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
+++ b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
@@ -100,7 +100,13 @@ public class ChatClientSupport {
     }
 
     public void broadcast(String message) {
-        session.write("BROADCAST " + message);
+        try {
+            for ( int i = 0; i < 1000000; i++) {
+                session.write("BROADCAST " + message + i);
+            }
+        } catch ( Exception e ) {
+            e.printStackTrace();
+        }
     }
 
     public void quit() {
@@ -110,7 +116,7 @@ public class ChatClientSupport {
                 // Wait until the chat ends.
                 session.getCloseFuture().awaitUninterruptibly();
             }
-            session.close(true);
+            session.closeNow();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/gettingstarted/timeserver/TimeServerHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/gettingstarted/timeserver/TimeServerHandler.java b/mina-example/src/main/java/org/apache/mina/example/gettingstarted/timeserver/TimeServerHandler.java
index 0b9eb6c..0660079 100644
--- a/mina-example/src/main/java/org/apache/mina/example/gettingstarted/timeserver/TimeServerHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/gettingstarted/timeserver/TimeServerHandler.java
@@ -53,7 +53,7 @@ public class TimeServerHandler extends IoHandlerAdapter
         
         if( str.trim().equalsIgnoreCase("quit") ) {
             // "Quit" ? let's get out ...
-            session.close(true);
+            session.closeNow();
             return;
         }
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/imagine/step1/client/ImageClient.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/imagine/step1/client/ImageClient.java b/mina-example/src/main/java/org/apache/mina/example/imagine/step1/client/ImageClient.java
index 0e793b0..99efb84 100644
--- a/mina-example/src/main/java/org/apache/mina/example/imagine/step1/client/ImageClient.java
+++ b/mina-example/src/main/java/org/apache/mina/example/imagine/step1/client/ImageClient.java
@@ -73,7 +73,7 @@ public class ImageClient extends IoHandlerAdapter {
 
     public void disconnect() {
         if (session != null) {
-            session.close(true).awaitUninterruptibly(CONNECT_TIMEOUT);
+            session.closeNow().awaitUninterruptibly(CONNECT_TIMEOUT);
             session = null;
         }
     }

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java b/mina-example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java
index e3fe622..b922b0e 100644
--- a/mina-example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java
@@ -50,7 +50,7 @@ public class NetCatProtocolHandler extends IoHandlerAdapter {
     public void sessionIdle(IoSession session, IdleStatus status) {
         // Close the connection if reader is idle.
         if (status == IdleStatus.READER_IDLE) {
-            session.close(true);
+            session.closeNow();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java b/mina-example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java
index 1b71c77..e929716 100644
--- a/mina-example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java
@@ -56,7 +56,7 @@ public abstract class AbstractProxyIoHandler extends IoHandlerAdapter {
         if (session.getAttribute( OTHER_IO_SESSION ) != null) {
             IoSession sess = (IoSession) session.getAttribute(OTHER_IO_SESSION);
             sess.setAttribute(OTHER_IO_SESSION, null);
-            sess.close(false);
+            sess.closeOnFlush();
             session.setAttribute(OTHER_IO_SESSION, null);
         }
     }

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java b/mina-example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java
index 4d31da3..3b8c6ef 100644
--- a/mina-example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java
@@ -59,7 +59,7 @@ public class ClientToProxyIoHandler extends AbstractProxyIoHandler {
                     session2.resumeWrite();
                 } catch (RuntimeIoException e) {
                     // Connect failed
-                    session.close(true);
+                    session.closeNow();
                 } finally {
                     session.resumeRead();
                     session.resumeWrite();

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/reverser/ReverseProtocolHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/reverser/ReverseProtocolHandler.java b/mina-example/src/main/java/org/apache/mina/example/reverser/ReverseProtocolHandler.java
index 7475bbb..56c0d51 100644
--- a/mina-example/src/main/java/org/apache/mina/example/reverser/ReverseProtocolHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/reverser/ReverseProtocolHandler.java
@@ -32,7 +32,7 @@ public class ReverseProtocolHandler extends IoHandlerAdapter {
     @Override
     public void exceptionCaught(IoSession session, Throwable cause) {
         // Close connection when unexpected exception is caught.
-        session.close(true);
+        session.closeNow();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/sumup/ClientSessionHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/sumup/ClientSessionHandler.java b/mina-example/src/main/java/org/apache/mina/example/sumup/ClientSessionHandler.java
index ac08482..cd72252 100644
--- a/mina-example/src/main/java/org/apache/mina/example/sumup/ClientSessionHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/sumup/ClientSessionHandler.java
@@ -72,19 +72,19 @@ public class ClientSessionHandler extends IoHandlerAdapter {
             if (rm.getSequence() == values.length - 1) {
                 // print the sum and disconnect.
                 LOGGER.info("The sum: " + rm.getValue());
-                session.close(true);
+                session.closeNow();
                 finished = true;
             }
         } else {
             // seever returned error code because of overflow, etc.
             LOGGER.warn("Server error, disconnecting...");
-            session.close(true);
+            session.closeNow();
             finished = true;
         }
     }
 
     @Override
     public void exceptionCaught(IoSession session, Throwable cause) {
-        session.close(true);
+        session.closeNow();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java b/mina-example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
index ed2c6dd..305a7f8 100644
--- a/mina-example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
@@ -82,12 +82,12 @@ public class ServerSessionHandler extends IoHandlerAdapter {
     public void sessionIdle(IoSession session, IdleStatus status) {
         LOGGER.info("Disconnecting the idle.");
         // disconnect an idle client
-        session.close(true);
+        session.closeNow();
     }
 
     @Override
     public void exceptionCaught(IoSession session, Throwable cause) {
         // close the connection on exceptional situation
-        session.close(true);
+        session.closeNow();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/tapedeck/AuthenticationHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/tapedeck/AuthenticationHandler.java b/mina-example/src/main/java/org/apache/mina/example/tapedeck/AuthenticationHandler.java
index 1a715b9..5a62e7a 100644
--- a/mina-example/src/main/java/org/apache/mina/example/tapedeck/AuthenticationHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/tapedeck/AuthenticationHandler.java
@@ -116,7 +116,7 @@ public class AuthenticationHandler {
     @IoFilterTransition(on = EXCEPTION_CAUGHT, in = ROOT, weight = 10)
     public void exceptionCaught(IoSession session, Exception e) {
         e.printStackTrace();
-        session.close(true);
+        session.closeNow();
     }
     
     @IoFilterTransition(on = SESSION_CLOSED, in = DONE)

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/tapedeck/TapeDeckServer.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/tapedeck/TapeDeckServer.java b/mina-example/src/main/java/org/apache/mina/example/tapedeck/TapeDeckServer.java
index 6d84884..5323cdb 100644
--- a/mina-example/src/main/java/org/apache/mina/example/tapedeck/TapeDeckServer.java
+++ b/mina-example/src/main/java/org/apache/mina/example/tapedeck/TapeDeckServer.java
@@ -136,7 +136,7 @@ public class TapeDeckServer {
     @IoHandlerTransition(on = EXCEPTION_CAUGHT, in = ROOT, weight = 10)
     public void exceptionCaught(IoSession session, Exception e) {
         e.printStackTrace();
-        session.close(true);
+        session.closeNow();
     }
     
     @IoHandlerTransition(in = ROOT, weight = 100)

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/tennis/TennisPlayer.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/tennis/TennisPlayer.java b/mina-example/src/main/java/org/apache/mina/example/tennis/TennisPlayer.java
index b5b2d8e..f281522 100644
--- a/mina-example/src/main/java/org/apache/mina/example/tennis/TennisPlayer.java
+++ b/mina-example/src/main/java/org/apache/mina/example/tennis/TennisPlayer.java
@@ -59,7 +59,7 @@ public class TennisPlayer extends IoHandlerAdapter {
         } else {
             // If the ball is dead, this player loses.
             System.out.println("Player-" + id + ": LOSE");
-            session.close(true);
+            session.closeNow();
         }
     }
 
@@ -71,6 +71,6 @@ public class TennisPlayer extends IoHandlerAdapter {
     @Override
     public void exceptionCaught(IoSession session, Throwable cause) {
         cause.printStackTrace();
-        session.close(true);
+        session.closeNow();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/udp/MemoryMonitorHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/udp/MemoryMonitorHandler.java b/mina-example/src/main/java/org/apache/mina/example/udp/MemoryMonitorHandler.java
index 1dc8a35..b824660 100644
--- a/mina-example/src/main/java/org/apache/mina/example/udp/MemoryMonitorHandler.java
+++ b/mina-example/src/main/java/org/apache/mina/example/udp/MemoryMonitorHandler.java
@@ -44,7 +44,7 @@ public class MemoryMonitorHandler extends IoHandlerAdapter {
     public void exceptionCaught(IoSession session, Throwable cause)
             throws Exception {
         cause.printStackTrace();
-        session.close(true);
+        session.closeNow();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpClient.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpClient.java b/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpClient.java
index 7bde50e..b66feb5 100644
--- a/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpClient.java
+++ b/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpClient.java
@@ -19,7 +19,6 @@
  */
 package org.apache.mina.example.udp.perf;
 
-import java.io.IOException;
 import java.net.InetSocketAddress;
 
 import org.apache.mina.core.buffer.IoBuffer;

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpServer.java
----------------------------------------------------------------------
diff --git a/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpServer.java b/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpServer.java
index 379af26..857feae 100644
--- a/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpServer.java
+++ b/mina-example/src/main/java/org/apache/mina/example/udp/perf/UdpServer.java
@@ -55,7 +55,7 @@ public class UdpServer extends IoHandlerAdapter {
     @Override
     public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
         cause.printStackTrace();
-        session.close(true);
+        session.closeNow();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
----------------------------------------------------------------------
diff --git a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
index 61b32ba..60755bf 100644
--- a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
+++ b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
@@ -25,7 +25,6 @@ import static org.junit.Assert.fail;
 
 import java.net.InetSocketAddress;
 
-import org.apache.mina.core.RuntimeIoException;
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.future.WriteFuture;
@@ -115,21 +114,12 @@ public class ConnectorTest extends AbstractTest {
             future.awaitUninterruptibly();
             session = future.getSession();
         } else {
-            int clientPort = port;
-            for (int i = 0; i < 65536; i++) {
-                clientPort = AvailablePortFinder
-                        .getNextAvailable(clientPort + 1);
-                try {
-                    ConnectFuture future = connector.connect(
-                            new InetSocketAddress("127.0.0.1", port),
-                            new InetSocketAddress(clientPort));
-                    future.awaitUninterruptibly();
-                    session = future.getSession();
-                    break;
-                } catch (RuntimeIoException e) {
-                    // Try again until we succeed to bind.
-                }
-            }
+            int clientPort = AvailablePortFinder.getNextAvailable();
+            ConnectFuture future = connector.connect(
+                    new InetSocketAddress("127.0.0.1", port),
+                    new InetSocketAddress(clientPort));
+            future.awaitUninterruptibly();
+            session = future.getSession();
 
             if (session == null) {
                 fail("Failed to find out an appropriate local address.");
@@ -171,7 +161,7 @@ public class ConnectorTest extends AbstractTest {
             testConnector0(session);
         }
 
-        session.close(true).awaitUninterruptibly();
+        session.closeNow().awaitUninterruptibly();
     }
 
     private void testConnector0(IoSession session) throws InterruptedException {
@@ -180,6 +170,7 @@ public class ConnectorTest extends AbstractTest {
         IoBuffer readBuf = handler.readBuf;
         readBuf.clear();
         WriteFuture writeFuture = null;
+        
         for (int i = 0; i < COUNT; i++) {
             IoBuffer buf = IoBuffer.allocate(DATA_SIZE);
             buf.limit(DATA_SIZE);

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
----------------------------------------------------------------------
diff --git a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
index 2291aec..067fc9e 100644
--- a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
+++ b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
@@ -170,7 +170,7 @@ public class SslFilterTest {
             sentMessages.add(message.toString());
 
             if (sentMessages.size() >= 2) {
-                session.close(true);
+                session.closeNow();
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/test/java/org/apache/mina/example/proxy/ClientSessionHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/test/java/org/apache/mina/example/proxy/ClientSessionHandler.java b/mina-example/src/test/java/org/apache/mina/example/proxy/ClientSessionHandler.java
index ccd41d2..3201d34 100644
--- a/mina-example/src/test/java/org/apache/mina/example/proxy/ClientSessionHandler.java
+++ b/mina-example/src/test/java/org/apache/mina/example/proxy/ClientSessionHandler.java
@@ -161,6 +161,6 @@ public class ClientSessionHandler extends AbstractProxyIoHandler {
     public void exceptionCaught(IoSession session, Throwable cause) {
         logger.debug("CLIENT - Exception caught");
         //cause.printStackTrace();
-        session.close(true);
+        session.closeNow();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina/blob/b1661ec2/mina-example/src/test/java/org/apache/mina/example/proxy/telnet/TelnetSessionHandler.java
----------------------------------------------------------------------
diff --git a/mina-example/src/test/java/org/apache/mina/example/proxy/telnet/TelnetSessionHandler.java b/mina-example/src/test/java/org/apache/mina/example/proxy/telnet/TelnetSessionHandler.java
index 4b27708..0c5541a 100644
--- a/mina-example/src/test/java/org/apache/mina/example/proxy/telnet/TelnetSessionHandler.java
+++ b/mina-example/src/test/java/org/apache/mina/example/proxy/telnet/TelnetSessionHandler.java
@@ -75,7 +75,7 @@ public class TelnetSessionHandler extends AbstractProxyIoHandler {
                     }
                 }
 
-                _session.close(true);
+                _session.closeNow();
             }
 
         }).start();
@@ -104,6 +104,6 @@ public class TelnetSessionHandler extends AbstractProxyIoHandler {
     public void exceptionCaught(IoSession session, Throwable cause) {
         logger.debug("CLIENT - Exception caught");
         //cause.printStackTrace();
-        session.close(true);
+        session.closeNow();
     }
 }
\ No newline at end of file