Author: ngn
Date: Fri Dec 5 13:50:21 2008
New Revision: 723886
URL: http://svn.apache.org/viewvc?rev=723886&view=rev
Log:
DELE should not delete directories (FTPSERVER-226). Thanks for the patch, Sai
Pullabhotla!
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java?rev=723886&r1=723885&r2=723886&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/impl/DELE.java
Fri Dec 5 13:50:21 2008
@@ -81,10 +81,17 @@
"DELE.invalid", fileName));
return;
}
-
+
// check file
fileName = file.getAbsolutePath();
+ if (file.isDirectory()) {
+ session.write(LocalizedFtpReply.translate(session, request,
context,
+ FtpReply.REPLY_550_REQUESTED_ACTION_NOT_TAKEN,
+ "DELE.invalid", fileName));
+ return;
+ }
+
if (!file.isRemovable()) {
session.write(LocalizedFtpReply.translate(session, request,
context,
FtpReply.REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN,
Modified:
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java?rev=723886&r1=723885&r2=723886&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
(original)
+++
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/DeleteTest.java
Fri Dec 5 13:50:21 2008
@@ -90,10 +90,12 @@
TEST_DIR1.mkdirs();
assertTrue(TEST_DIR1.exists());
+
+ assertEquals(550, client.sendCommand("DELE " + TEST_DIR1.getName()));
- assertTrue(client.deleteFile(TEST_DIR1.getName()));
+ assertFalse(client.deleteFile(TEST_DIR1.getName()));
- assertFalse(TEST_DIR1.exists());
+ assertTrue(TEST_DIR1.exists());
}
public void testDeleteDirWithFile() throws Exception {
@@ -103,6 +105,8 @@
assertTrue(TEST_DIR1.exists());
assertTrue(TEST_FILE_IN_DIR1.exists());
+ assertEquals(550, client.sendCommand("DELE " + TEST_DIR1.getName()));
+
assertFalse(client.deleteFile(TEST_DIR1.getName()));
assertTrue(TEST_DIR1.exists());