You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ftpserver-users@mina.apache.org by Edward Scanzano <es...@yahoo.com> on 2009/03/07 19:04:27 UTC
Getting socket exception
Hi,
I have this code
public FtpletResult onUploadStart(FtpSession session, FtpRequest request) throws FtpException, IOException {
ByteArrayOutputStream bos = null;
try {
bos = new ByteArrayOutputStream();
DataConnectionFactory dcf = session.getDataConnection();
DataConnection dc = dcf.openConnection();
dc.transferFromClient(session, bos);
session.write(new DefaultFtpReply(150, "Data transfer complete."));
} catch (Exception ex) {
ex.printStackTrace();
} finally {
session.getDataConnection().closeDataConnection();
if (bos != null) bos.close();
}
return FtpletResult.SKIP;
}
and the line dc.transferFromClient(session, bos) is throwing this exception
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at org.apache.ftpserver.impl.IODataConnection.transfer(IODataConnection.java:238)
at org.apache.ftpserver.impl.IODataConnection.transferFromClient(IODataConnection.java:131)
at com.cfm.common.metamodel.impl.es.CFMFTPLet.onUploadStart(CFMFTPLet.java:116)
at com.cfm.common.metamodel.impl.es.CFMFTPLet.beforeCommand(CFMFTPLet.java:43)
at org.apache.ftpserver.ftpletcontainer.impl.DefaultFtpletContainer.beforeCommand(DefaultFtpletContainer.java:163)
at org.apache.ftpserver.impl.DefaultFtpHandler.messageReceived(DefaultFtpHandler.java:156)
at org.apache.ftpserver.listener.nio.FtpHandlerAdapter.messageReceived(FtpHandlerAdapter.java:65)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:722)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802)
at org.apache.ftpserver.listener.nio.FtpLoggingFilter.messageReceived(FtpLoggingFilter.java:90)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802)
at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:59)
at org.apache.mina.filter.logging.MdcInjectionFilter.filter(MdcInjectionFilter.java:137)
at org.apache.mina.filter.util.CommonEventFilter.messageReceived(CommonEventFilter.java:70)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802)
at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:392)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:228)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802)
at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:59)
at org.apache.mina.core.session.IoEvent.run(IoEvent.java:64)
at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:552)
at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:544)
at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:488)
at java.lang.Thread.run(Thread.java:595)
At first it pauses for a while and then throws the exception above.
I am trying to execute the put <filename> from the client.
Any ideas what is causing this?
Thanks
Re: Getting socket exception
Posted by Niklas Gustavsson <ni...@protocol7.com>.
Hi
You need to send the 150 before starting the transfer (it's what
triggers the client to prepare for the transfer. After the transfer,
you also need to send a 226 to show that the command is complete.
/niklas
On Sat, Mar 7, 2009 at 7:04 PM, Edward Scanzano <es...@yahoo.com> wrote:
>
> Hi,
>
> I have this code
>
> public FtpletResult onUploadStart(FtpSession session, FtpRequest request) throws FtpException, IOException {
> ByteArrayOutputStream bos = null;
>
> try {
> bos = new ByteArrayOutputStream();
> DataConnectionFactory dcf = session.getDataConnection();
> DataConnection dc = dcf.openConnection();
> dc.transferFromClient(session, bos);
>
> session.write(new DefaultFtpReply(150, "Data transfer complete."));
> } catch (Exception ex) {
> ex.printStackTrace();
> } finally {
> session.getDataConnection().closeDataConnection();
> if (bos != null) bos.close();
> }
>
> return FtpletResult.SKIP;
> }
>
> and the line dc.transferFromClient(session, bos) is throwing this exception
>
> java.net.SocketException: Connection reset
> at java.net.SocketInputStream.read(SocketInputStream.java:168)
> at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
> at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
> at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
> at java.io.FilterInputStream.read(FilterInputStream.java:90)
> at org.apache.ftpserver.impl.IODataConnection.transfer(IODataConnection.java:238)
> at org.apache.ftpserver.impl.IODataConnection.transferFromClient(IODataConnection.java:131)
> at com.cfm.common.metamodel.impl.es.CFMFTPLet.onUploadStart(CFMFTPLet.java:116)
> at com.cfm.common.metamodel.impl.es.CFMFTPLet.beforeCommand(CFMFTPLet.java:43)
> at org.apache.ftpserver.ftpletcontainer.impl.DefaultFtpletContainer.beforeCommand(DefaultFtpletContainer.java:163)
> at org.apache.ftpserver.impl.DefaultFtpHandler.messageReceived(DefaultFtpHandler.java:156)
> at org.apache.ftpserver.listener.nio.FtpHandlerAdapter.messageReceived(FtpHandlerAdapter.java:65)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:722)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802)
> at org.apache.ftpserver.listener.nio.FtpLoggingFilter.messageReceived(FtpLoggingFilter.java:90)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802)
> at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:59)
> at org.apache.mina.filter.logging.MdcInjectionFilter.filter(MdcInjectionFilter.java:137)
> at org.apache.mina.filter.util.CommonEventFilter.messageReceived(CommonEventFilter.java:70)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802)
> at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:392)
> at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:228)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
> at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802)
> at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:59)
> at org.apache.mina.core.session.IoEvent.run(IoEvent.java:64)
> at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:552)
> at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:544)
> at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:488)
> at java.lang.Thread.run(Thread.java:595)
>
> At first it pauses for a while and then throws the exception above.
>
> I am trying to execute the put <filename> from the client.
>
> Any ideas what is causing this?
>
> Thanks
>