You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2011/08/29 22:24:14 UTC
svn commit: r1162981 -
/mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
Author: ngn
Date: Mon Aug 29 20:24:14 2011
New Revision: 1162981
URL: http://svn.apache.org/viewvc?rev=1162981&view=rev
Log:
Reserving passive port might remove an unused port from freeList, causing starvation of passive ports (FTPSERVER-424)
Modified:
mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
Modified: mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java?rev=1162981&r1=1162980&r2=1162981&view=diff
==============================================================================
--- mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java (original)
+++ mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/PassivePorts.java Mon Aug 29 20:24:14 2011
@@ -47,7 +47,7 @@ public class PassivePorts {
private static final Integer MAX_PORT_INTEGER = Integer.valueOf(MAX_PORT);
- private List<Integer> freeList;
+ private Set<Integer> freeList;
private Set<Integer> usedList;
@@ -158,7 +158,7 @@ public class PassivePorts {
passivePorts.add(0);
}
- this.freeList = new ArrayList<Integer>(passivePorts);
+ this.freeList = new HashSet<Integer>(passivePorts);
this.usedList = new HashSet<Integer>(passivePorts.size());
this.checkIfBound = checkIfBound;
@@ -215,12 +215,12 @@ public class PassivePorts {
} else if (checkPortUnbound(ret)) {
// Not used by someone else, so lets reserve it and return it
- freeList.remove(i);
+ freeList.remove(ret);
usedList.add(ret);
return ret;
} else {
- freeCopy.remove(i);
+ freeCopy.remove(ret);
// log port unavailable, but left in pool
log.warn("Passive port in use by another process: " + ret);
}