[ https://issues.apache.org/jira/browse/FTPSERVER-111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12537947 ]
Niklas Gustavsson commented on FTPSERVER-111: --------------------------------------------- Could you please provide a test case (like those in org.apache.ftpserver.clienttests) for this issue? I'm assuming this happens when the client sends the same port twice in the PORT command? > Data channel cannot be opened in active mode > -------------------------------------------- > > Key: FTPSERVER-111 > URL: https://issues.apache.org/jira/browse/FTPSERVER-111 > Project: FtpServer > Issue Type: Bug > Components: Core > Environment: Solaris, Linux, maybe others (Windows seems to work) > Reporter: Rico Neubauer > Attachments: apache-ftpserver-111-patch.txt > > > FTP-Server with active mode running on Solaris/Linux > Client connects to the server with active mode. > Issue list command -> ok > issue second list command -> client hangs > Client commands: > 220 Service ready for new user. > Name (localhost:username): test > 331 User name okay, need password for test. > Password: > 230 User logged in, proceed. > Remote system type is UNIX. > ftp> > ftp> > ftp> ls > 200 Command PORT okay. > 150 File status okay; about to open data connection. > directory1 > directory2 > 226 Closing data connection. > 11 bytes received in 0.0099 seconds (1.08 Kbytes/s) > ftp> ls > 200 Command PORT okay. > 150 File status okay; about to open data connection. > <Client hangs here> > Server-Log: > 15:38:08,581 INFO [UserManagerImpl] authenticate: Authentication for user > <test> complete. > 15:38:08,583 DEBUG [UserManagerImpl] setUserConfigurations: Setting up user > permissions... > 15:38:08,584 DEBUG [UserManagerImpl] setUserConfigurations: Write permission > granted for user <test> > 15:38:08,597 DEBUG [FTPServerFtplet] onLogin:PASS ***** > 15:38:08,627 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] WRITE: 230 > User logged in, proceed. > 15:38:08,628 INFO [PASS] Login success - test > 15:38:08,629 DEBUG [ExecutorFilter] Exiting since queue is empty for > /10.0.0.239:33204 > 15:38:08,629 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] SENT: 230 > User logged in, proceed. > 15:38:08,630 DEBUG [ExecutorFilter] Launching thread for /10.0.0.239:33204 > 15:38:08,631 DEBUG [ExecutorFilter] Exiting since queue is empty for > /10.0.0.239:33204 > 15:38:08,631 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] RECEIVED: SYST > 15:38:08,632 DEBUG [ExecutorFilter] Launching thread for /10.0.0.239:33204 > 15:38:08,632 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] WRITE: 215 > UNIX Type: Apache FTP Server > 15:38:08,634 DEBUG [ExecutorFilter] Exiting since queue is empty for > /10.0.0.239:33204 > 15:38:08,634 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] SENT: 215 > UNIX Type: Apache FTP Server > 15:38:08,635 DEBUG [ExecutorFilter] Launching thread for /10.0.0.239:33204 > 15:38:08,635 DEBUG [ExecutorFilter] Exiting since queue is empty for > /10.0.0.239:33204 > 15:38:11,153 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] RECEIVED: > PORT 10,0,0,239,129,181 > 15:38:11,156 DEBUG [ExecutorFilter] Launching thread for /10.0.0.239:33204 > 15:38:11,157 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] WRITE: 510 > PORT is disabled. > 15:38:11,158 DEBUG [ExecutorFilter] Exiting since queue is empty for > /10.0.0.239:33204 > 15:38:11,158 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] SENT: 510 > PORT is disabled. > 15:38:11,159 DEBUG [ExecutorFilter] Launching thread for /10.0.0.239:33204 > 15:38:11,160 DEBUG [ExecutorFilter] Exiting since queue is empty for > /10.0.0.239:33204 > 15:38:11,160 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] RECEIVED: NLST > 15:38:11,161 DEBUG [ExecutorFilter] Launching thread for /10.0.0.239:33204 > 15:38:11,161 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] WRITE: 150 > File status okay; about to open data connection. > 15:38:11,162 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] SENT: 150 > File status okay; about to open data connection. > 15:38:11,167 WARN [IODataConnectionFactory] FtpDataConnection.getDataSocket() > java.lang.NullPointerException > at java.net.Socket.<init>(Socket.java:358) > at java.net.Socket.<init>(Socket.java:208) > at > org.apache.ftpserver.IODataConnectionFactory.createDataSocket(IODataConnectionFactory.java:261) > at > org.apache.ftpserver.IODataConnectionFactory.openConnection(IODataConnectionFactory.java:232) > at org.apache.ftpserver.command.NLST.execute(NLST.java:81) > at > org.apache.ftpserver.listener.FtpProtocolHandler.service(FtpProtocolHandler.java:195) > at > org.apache.ftpserver.listener.FtpProtocolHandler.onRequestReceived(FtpProtocolHandler.java:122) > at > org.apache.ftpserver.listener.mina.MinaFtpProtocolHandler.messageReceived(MinaFtpProtocolHandler.java:106) > at > org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:569) > at > org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:298) > at > org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:53) > at > org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:647) > at > org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220) > at > org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:266) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > 15:38:11,174 DEBUG [NLST] Exception getting the output data stream > java.lang.NullPointerException > at java.net.Socket.<init>(Socket.java:358) > at java.net.Socket.<init>(Socket.java:208) > at > org.apache.ftpserver.IODataConnectionFactory.createDataSocket(IODataConnectionFactory.java:261) > at > org.apache.ftpserver.IODataConnectionFactory.openConnection(IODataConnectionFactory.java:232) > at org.apache.ftpserver.command.NLST.execute(NLST.java:81) > at > org.apache.ftpserver.listener.FtpProtocolHandler.service(FtpProtocolHandler.java:195) > at > org.apache.ftpserver.listener.FtpProtocolHandler.onRequestReceived(FtpProtocolHandler.java:122) > at > org.apache.ftpserver.listener.mina.MinaFtpProtocolHandler.messageReceived(MinaFtpProtocolHandler.java:106) > at > org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:569) > at > org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:298) > at > org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:53) > at > org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:647) > at > org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220) > at > org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:266) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > 15:38:11,175 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] WRITE: 425 > Can't open data connection. > 15:38:11,176 DEBUG [ExecutorFilter] Exiting since queue is empty for > /10.0.0.239:33204 > 15:38:11,176 INFO [MinaFtpProtocolHandler] [/10.0.0.239:33204] SENT: 425 > Can't open data connection. > 15:38:11,177 DEBUG [ExecutorFilter] Launching thread for /10.0.0.239:33204 > 15:38:11,177 DEBUG [ExecutorFilter] Exiting since queue is empty for > /10.0.0.239:33204 > 15:39:38,458 WARN [MinaFtpProtocolHandler] [/10.0.0.239:33204] EXCEPTION: > org.apache.mina.filter.codec.ProtocolDecoderException: > java.nio.charset.MalformedInputException: Input length = 1 (Hexdump: empty) > at > org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:160) > at > org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:298) > at > org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:53) > at > org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:647) > at > org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:498) > at > org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:298) > at > org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:292) > at > org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:253) > at > org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:223) > at > org.apache.mina.transport.socket.nio.SocketIoProcessor.access$500(SocketIoProcessor.java:44) > at > org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:524) > at > org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:39) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > Caused by: java.nio.charset.MalformedInputException: Input length = 1 > at java.nio.charset.CoderResult.throwException(CoderResult.java:260) > at org.apache.mina.common.ByteBuffer.getString(ByteBuffer.java:953) > at > org.apache.mina.filter.codec.textline.TextLineDecoder.decodeAuto(TextLineDecoder.java:180) > at > org.apache.mina.filter.codec.textline.TextLineDecoder.decode(TextLineDecoder.java:113) > at > org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:153) > ... 14 more -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.