[
https://issues.apache.org/jira/browse/FTPSERVER-78?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Niklas Gustavsson updated FTPSERVER-78:
---------------------------------------
Fix Version/s: 1.0-M2
Assignee: Niklas Gustavsson
Affects Version/s: (was: 1.0-M2)
(was: 1.0)
(was: WISHLIST)
> FTP sessions disconnect after about a minute of user idle even if user max
> idle time is set to infinite
> -------------------------------------------------------------------------------------------------------
>
> Key: FTPSERVER-78
> URL: https://issues.apache.org/jira/browse/FTPSERVER-78
> Project: FtpServer
> Issue Type: Bug
> Components: Core
> Affects Versions: 1.0-M1
> Environment: FreeBSD, JDK6
> Reporter: Peter Kostouros
> Assigned To: Niklas Gustavsson
> Priority: Minor
> Fix For: 1.0-M2
>
>
> The FTP server forcibly disconnects clients after about a minute of user idle
> even if the user's maximum idle time setting is not exceeded.
> Test case shown below:
> /home/peter/ftpserver/trunk/core/src/test/org/apache/ftpserver/clienttests/TimeoutTest
> /*
> * 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.io.ByteArrayOutputStream;
> import java.io.File;
> import org.apache.ftpserver.test.TestUtil;
> public class TimeoutTest extends ClientTestTemplate {
> private static final String TEST_FILENAME = "test.txt";
> private static final File TEST_FILE = new File(ROOT_DIR, TEST_FILENAME);
> private static byte[] testData = null;
> private static long TIMEOUT = 120000L;
>
> /* (non-Javadoc)
> * @see org.apache.ftpserver.clienttests.ClientTestTemplate#setUp()
> */
> protected void setUp() throws Exception {
> super.setUp();
> testData = "TESTDATA".getBytes("UTF-8");
>
> client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
> }
> public void testTimeout() throws Exception {
>
> TestUtil.writeDataToFile(TEST_FILE, testData);
> assertTrue(TEST_FILE.exists());
> Thread.sleep(TIMEOUT);
> ByteArrayOutputStream baos = new ByteArrayOutputStream();
> assertTrue(client.retrieveFile(TEST_FILENAME, baos));
>
> assertTrue(TEST_FILE.exists());
> TestUtil.assertArraysEqual(testData, baos.toByteArray());
> }
> }
> Test case report:
> /home/peter/ftpserver/trunk/core/target/surefire-reports/TEST-org.apache.ftpserver.clienttests.TimeoutTest.xml
> org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed
> without indication. at
> org.apache.commons.net.ftp.FTP.__getReply(FTP.java:267) at
> org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:460) at
> org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:520) at
> org.apache.commons.net.ftp.FTP.port(FTP.java:849) at
> org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:477)
> at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1285) at
> org.apache.ftpserver.clienttests.TimeoutTest.testTimeout(TimeoutTest.java:56)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597) at
> junit.framework.TestCase.runTest(TestCase.java:154) at
> junit.framework.TestCase.runBare(TestCase.java:127) at
> junit.framework.TestResult$1.protect(TestResult.java:106) at
> junit.framework.TestResult.runProtected(TestResult.java:124) at
> junit.framework.TestResult.run(TestResult.java:109) at
> junit.framework.TestCase.run(TestCase.java:118) at
> junit.framework.TestSuite.runTest(TestSuite.java:208) at
> junit.framework.TestSuite.run(TestSuite.java:203) at
> sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597) at
> org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246)
> at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220)
> at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:204) at
> org.codehaus.surefire.Surefire.run(Surefire.java:153) at
> org.codehaus.surefire.Surefire.run(Surefire.java:77) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597) at
> org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at
> org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:303) at
> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:420)
> at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539)
> at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480)
> at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:459)
> at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311)
> at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:278)
> at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:330) at
> org.apache.maven.DefaultMaven.execute(DefaultMaven.java:123) at
> org.apache.maven.cli.MavenCli.main(MavenCli.java:272) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597) at
> org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at
> org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at
> org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at
> org.codehaus.classworlds.Launcher.main(Launcher.java:375) Server ready ::
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.