Author: trustin
Date: Thu Sep 27 07:37:00 2007
New Revision: 580025

URL: http://svn.apache.org/viewvc?rev=580025&view=rev
Log:
Resolved issue: DIRMINA-443 (SocketConnection cannot be manually closed (for 
v2.X))
* Fixed a possible FD leak or unnotified ConnectFutures when close() is called


Modified:
    
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java
    
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java?rev=580025&r1=580024&r2=580025&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java 
(original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java 
Thu Sep 27 07:37:00 2007
@@ -40,7 +40,6 @@
     private final Object lock = new Object();
     private final String threadName;
     private final Executor executor;
-    private boolean closeFlag;
 
     private final Queue<AbstractIoSession> newSessions =
         new ConcurrentLinkedQueue<AbstractIoSession>();
@@ -133,10 +132,6 @@
 
     protected abstract long transferFile(IoSession session, FileRegion region) 
throws Exception;
 
-    public void close(){
-        closeFlag = true;
-    }
-    
     public void add(IoSession session) {
         newSessions.add((AbstractIoSession) session);
         startupWorker();
@@ -581,12 +576,6 @@
                 try {
                     boolean selected = select(1000);
 
-                    if (closeFlag){
-                        synchronized (lock) {
-                            worker = null;
-                            break;
-                        }
-                    }
                     nSessions += add();
                     updateTrafficMask();
 

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java?rev=580025&r1=580024&r2=580025&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
 Thu Sep 27 07:37:00 2007
@@ -79,8 +79,6 @@
 
     private int workerTimeout = 60; // 1 min.
 
-    private boolean closeFlag;
-
     /**
      * Create a connector with a single processing thread using a 
NewThreadExecutor
      */
@@ -158,11 +156,8 @@
     }
 
     public void close(){
-        closeFlag = true;
+        setWorkerTimeout(0);
         selector.wakeup();
-        for (NioProcessor ioProcessor : ioProcessors) {
-          ioProcessor.close();
-        }
     }
 
     @Override
@@ -318,13 +313,6 @@
                 try {
                     int nKeys = selector.select(1000);
 
-                    if (closeFlag){
-                        synchronized (lock) {
-                            worker = null;
-                            break;
-                        }
-                    }
-
                     registerNew();
 
                     if (nKeys > 0) {
@@ -370,4 +358,4 @@
                     + getConnectTimeoutMillis();
         }
     }
-}
\ No newline at end of file
+}


Reply via email to