You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by dl...@apache.org on 2009/05/27 14:35:11 UTC
svn commit: r779145 - in /mina/ftpserver/trunk/core/src:
main/java/org/apache/ftpserver/impl/IODataConnection.java
test/java/org/apache/ftpserver/clienttests/StoreTest.java
Author: dlat
Date: Wed May 27 12:35:11 2009
New Revision: 779145
URL: http://svn.apache.org/viewvc?rev=779145&view=rev
Log:
FTPSERVER-306 EOL sequence is lost if the file wasn't correctly transformed to NVT format (this is, the sent new line sequence is different from \r\n)
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java?rev=779145&r1=779144&r2=779145&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java Wed May 27 12:35:11 2009
@@ -270,7 +270,11 @@
if(b == '\n') {
// for reads, we should always get \r\n
// so what we do here is to ignore \n bytes
- // and on \r dump the system local line ending
+ // and on \r dump the system local line ending.
+ // Some clients won't transform new lines into \r\n so we make sure we don't delete new lines
+ if (lastByte != '\r'){
+ bos.write(EOL);
+ }
} else if(b == '\r') {
bos.write(EOL);
} else {
Modified: mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java?rev=779145&r1=779144&r2=779145&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java (original)
+++ mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/StoreTest.java Wed May 27 12:35:11 2009
@@ -33,10 +33,12 @@
public class StoreTest extends ClientTestTemplate {
private static final String EOL = System.getProperty("line.separator");
private static final String CRLF = "\r\n";
+ private static final String LF = "\n";
private static final String TESTDATA = "TESTDATA" + EOL + "line2" + EOL;
private static final String TESTDATA_CRLF = "TESTDATA" + CRLF + "line2" + CRLF;
+ private static final String TESTDATA_LF = "TESTDATA" + LF + "line2" + LF;
private static final String ENCODING = "UTF-8";
@@ -50,6 +52,7 @@
private static byte[] testData = null;
private static byte[] testDataCrLf = null;
+ private static byte[] testDataLf = null;
private static byte[] doubleTestData = null;
@@ -65,6 +68,7 @@
testData = TESTDATA.getBytes(ENCODING);
testDataCrLf = TESTDATA_CRLF.getBytes(ENCODING);
+ testDataLf = TESTDATA_LF.getBytes(ENCODING);
doubleTestData = (TESTDATA + TESTDATA).getBytes(ENCODING);
oneAndAHalfTestData = ("TEST" + TESTDATA).getBytes(ENCODING);
@@ -94,6 +98,21 @@
assertTrue(testFile.exists());
TestUtil.assertFileEqual(testData, testFile);
}
+
+ /**
+ * We should always store files with the local line endings (FTPSERVER-184)
+ *
+ */
+ public void testStoreWithLf() throws Exception {
+ File testFile = new File(ROOT_DIR, TEST_FILENAME);
+
+ assertTrue(client.storeFile(TEST_FILENAME, new ByteArrayInputStream(
+ testDataLf)));
+
+ assertTrue(testFile.exists());
+ TestUtil.assertFileEqual(testData, testFile);
+ }
+
public void testStoreWithLeadingSpace() throws Exception {
File testFile = new File(ROOT_DIR, TEST_FILENAME_WITH_LEADING_SPACE);