[ 
https://issues.apache.org/jira/browse/FTPSERVER-78?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Niklas Gustavsson closed FTPSERVER-78.
--------------------------------------

    Resolution: Fixed

Fixed, thanks for the excellent test case.

commit -m "Remove generic timeout for MINA sessions (FTPSERVER-78)" 
C:/home/niklas/workspaces/apache/ftpserver/core/src/java/org/apache/ftpserver/listener/mina/MinaFtpProtocolHandler.java
    Sending        
C:/home/niklas/workspaces/apache/ftpserver/core/src/java/org/apache/ftpserver/listener/mina/MinaFtpProtocolHandler.java
    Transmitting file data ...
    Committed revision 516774.


> 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.

Reply via email to