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
+}