You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ftpserver-commits@incubator.apache.org by ng...@apache.org on 2007/03/29 15:25:41 UTC
svn commit: r523744 - in
/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina:
FtpResponseEncoder.java FtpServerProtocolCodecFactory.java
MinaFtpProtocolHandler.java
Author: ngn
Date: Thu Mar 29 08:25:40 2007
New Revision: 523744
URL: http://svn.apache.org/viewvc?view=rev&rev=523744
Log:
Fix for bug where multiple commands arrive at the decoder at the same time (FTPSERVER-81).
Will also fix bug where partial command would arrive due to network latency.
Optimized the encoder slightly by allocating the buffer size we really need.
Modified:
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpServerProtocolCodecFactory.java
incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/MinaFtpProtocolHandler.java
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java?view=diff&rev=523744&r1=523743&r2=523744
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java Thu Mar 29 08:25:40 2007
@@ -39,11 +39,11 @@
public void encode( IoSession session, Object message,
ProtocolEncoderOutput out ) throws Exception
{
- FtpReply ftpResponse = (FtpReply) message;
+ String value = message.toString();
- ByteBuffer buf = ByteBuffer.allocate( 256 );
+ ByteBuffer buf = ByteBuffer.allocate( value.length() ).setAutoExpand( true );
- buf.putString( ftpResponse.toString(), ENCODER );
+ buf.putString( value, ENCODER );
buf.flip();
out.write(buf);
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpServerProtocolCodecFactory.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpServerProtocolCodecFactory.java?view=diff&rev=523744&r1=523743&r2=523744
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpServerProtocolCodecFactory.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpServerProtocolCodecFactory.java Thu Mar 29 08:25:40 2007
@@ -19,17 +19,20 @@
*/
package org.apache.ftpserver.listener.mina;
+import java.nio.charset.Charset;
+
import org.apache.mina.filter.codec.ProtocolCodecFactory;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolEncoder;
+import org.apache.mina.filter.codec.textline.TextLineDecoder;
/**
* Factory for creating decoders and encoders
*/
public class FtpServerProtocolCodecFactory implements ProtocolCodecFactory
{
- private FtpRequestDecoder decoder = new FtpRequestDecoder();
- private FtpResponseEncoder encoder = new FtpResponseEncoder();
+ private ProtocolDecoder decoder = new TextLineDecoder(Charset.forName("UTF-8"));
+ private ProtocolEncoder encoder = new FtpResponseEncoder();
public ProtocolDecoder getDecoder() throws Exception {
return decoder;
Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/MinaFtpProtocolHandler.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/MinaFtpProtocolHandler.java?view=diff&rev=523744&r1=523743&r2=523744
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/MinaFtpProtocolHandler.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/MinaFtpProtocolHandler.java Thu Mar 29 08:25:40 2007
@@ -21,6 +21,7 @@
import java.io.IOException;
+import org.apache.ftpserver.FtpRequestImpl;
import org.apache.ftpserver.FtpSessionImpl;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpRequest;
@@ -83,7 +84,8 @@
public void messageReceived( IoSession session, Object message ) throws IOException, FtpException
{
- FtpRequest request = (FtpRequest) message;
+ // Incoming messages are decoded into strings
+ FtpRequest request = new FtpRequestImpl(message.toString());
ConnectionObserver observer = (ConnectionObserver) session.getAttribute("observer");