You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by sa...@apache.org on 2010/03/29 10:56:44 UTC
svn commit: r928650 - in /mina/ftpserver/branches/1.0.x/core/src:
main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java
Author: sai
Date: Mon Mar 29 08:56:44 2010
New Revision: 928650
URL: http://svn.apache.org/viewvc?rev=928650&view=rev
Log:
Fix for FTPSERVER-360
Added:
mina/ftpserver/branches/1.0.x/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java (with props)
Modified:
mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
Modified: mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java?rev=928650&r1=928649&r2=928650&view=diff
==============================================================================
--- mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java (original)
+++ mina/ftpserver/branches/1.0.x/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java Mon Mar 29 08:56:44 2010
@@ -122,25 +122,7 @@ public class DefaultDataConnectionConfig
* port will be used.
*/
public synchronized int requestPassivePort() {
- int dataPort = -1;
- int loopTimes = 2;
- Thread currThread = Thread.currentThread();
-
- while ((dataPort == -1) && (--loopTimes >= 0)
- && (!currThread.isInterrupted())) {
-
- // search for a free port
- dataPort = passivePorts.reserveNextPort();
-
- // no available free port - wait for the release notification
- if (dataPort == -1) {
- try {
- wait();
- } catch (InterruptedException ex) {
- }
- }
- }
- return dataPort;
+ return passivePorts.reserveNextPort();
}
/**
@@ -157,8 +139,6 @@ public class DefaultDataConnectionConfig
*/
public synchronized void releasePassivePort(final int port) {
passivePorts.releasePort(port);
-
- notify();
}
/**
Added: mina/ftpserver/branches/1.0.x/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/branches/1.0.x/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java?rev=928650&view=auto
==============================================================================
--- mina/ftpserver/branches/1.0.x/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java (added)
+++ mina/ftpserver/branches/1.0.x/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java Mon Mar 29 08:56:44 2010
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ftpserver.clienttests;
+
+import java.net.ServerSocket;
+
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
+import org.apache.ftpserver.FtpServerFactory;
+import org.apache.ftpserver.listener.ListenerFactory;
+import org.apache.ftpserver.test.TestUtil;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPConnectionClosedException;
+
+
+/**
+*
+* @author <a href="http://mina.apache.org">Apache MINA Project</a>
+*
+*/
+public class PasvPortUnavailableTest extends ClientTestTemplate {
+
+ private int passivePort;
+
+ @Override
+ protected FtpServerFactory createServer() throws Exception {
+ FtpServerFactory server = super.createServer();
+
+ ListenerFactory listenerFactory = new ListenerFactory(server
+ .getListener("default"));
+
+ DataConnectionConfigurationFactory dccFactory = new DataConnectionConfigurationFactory();
+
+ passivePort = TestUtil.findFreePort(12444);
+
+ dccFactory.setPassivePorts(String.valueOf(passivePort));
+
+ listenerFactory.setDataConnectionConfiguration(dccFactory
+ .createDataConnectionConfiguration());
+
+ server.addListener("default", listenerFactory.createListener());
+
+ return server;
+ }
+
+ public void testPasvPortUnavailable() throws Exception {
+ FTPClient[] clients = new FTPClient[3];
+ for(int i = 0; i < 3; i ++) {
+ clients[i] = createFTPClient();
+ clients[i] .connect("localhost", getListenerPort());
+ clients[i].login(ADMIN_USERNAME, ADMIN_PASSWORD);
+ clients[i].pasv();
+ if(i < 1) {
+ assertTrue(clients[i].getReplyString(), clients[i].getReplyString().trim().startsWith("227"));
+ }
+ else {
+ assertTrue(clients[i].getReplyString(), clients[i].getReplyString().trim().startsWith("425"));
+ }
+ }
+ for(int i = 0; i < 3; i ++) {
+ if(clients[i] != null) {
+ clients[i].disconnect();
+ }
+ }
+ }
+}
Propchange: mina/ftpserver/branches/1.0.x/core/src/test/java/org/apache/ftpserver/clienttests/PasvPortUnavailableTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain