You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2008/03/12 10:45:34 UTC
svn commit: r636265 - in /mina/ftpserver/trunk/core/src:
main/java/org/apache/ftpserver/ main/java/org/apache/ftpserver/command/
test/java/org/apache/ftpserver/ftplet/
Author: ngn
Date: Wed Mar 12 02:45:20 2008
New Revision: 636265
URL: http://svn.apache.org/viewvc?rev=636265&view=rev
Log:
Fixed race condition where a session would not be closed before the client could send the next command (e.g. on Ftplet disconnect)
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/APPE.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/DELE.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/MKD.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/PASS.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RETR.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RMD.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RNTO.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/SITE.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOR.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOU.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/USER.java
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ftplet/FtpLetThrowIOExceptionTest.java
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java Wed Mar 12 02:45:20 2008
@@ -59,7 +59,7 @@
public void exceptionCaught( IoSession session, Throwable cause ) throws Exception
{
LOG.error("Exception caught, closing session", cause);
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
}
@Override
@@ -106,6 +106,7 @@
@Override
public void sessionIdle( IoSession session, IdleStatus status ) throws Exception
{
- session.closeOnFlush();
+ LOG.info("Session idle, closing");
+ session.closeOnFlush().awaitUninterruptibly(10000);
}
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/APPE.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/APPE.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/APPE.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/APPE.java Wed Mar 12 02:45:20 2008
@@ -99,7 +99,7 @@
return;
}
else if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
@@ -193,7 +193,7 @@
ftpletRet = FtpletEnum.RET_DISCONNECT;
}
if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/DELE.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/DELE.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/DELE.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/DELE.java Wed Mar 12 02:45:20 2008
@@ -76,7 +76,7 @@
return;
}
else if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
@@ -123,7 +123,7 @@
ftpletRet = FtpletEnum.RET_DISCONNECT;
}
if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/MKD.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/MKD.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/MKD.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/MKD.java Wed Mar 12 02:45:20 2008
@@ -78,7 +78,7 @@
return;
}
else if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
@@ -128,7 +128,7 @@
ftpletRet = FtpletEnum.RET_DISCONNECT;
}
if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/PASS.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/PASS.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/PASS.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/PASS.java Wed Mar 12 02:45:20 2008
@@ -169,7 +169,7 @@
ftpletRet = FtpletEnum.RET_DISCONNECT;
}
if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
} else if(ftpletRet == FtpletEnum.RET_SKIP) {
success = false;
@@ -194,7 +194,7 @@
int maxAllowedLoginFailues = conManager.getMaxLoginFailures();
if(maxAllowedLoginFailues != 0 &&
session.getFailedLogins() >= maxAllowedLoginFailues) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
}
return;
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java Wed Mar 12 02:45:20 2008
@@ -45,7 +45,7 @@
session.resetState();
session.write(FtpReplyUtil.translate(session, request, context, FtpReply.REPLY_221_CLOSING_CONTROL_CONNECTION, "QUIT", null));
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
}
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RETR.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RETR.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RETR.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RETR.java Wed Mar 12 02:45:20 2008
@@ -89,7 +89,7 @@
return;
}
else if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
@@ -196,7 +196,7 @@
ftpletRet = FtpletEnum.RET_DISCONNECT;
}
if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RMD.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RMD.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RMD.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RMD.java Wed Mar 12 02:45:20 2008
@@ -77,7 +77,7 @@
return;
}
else if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
@@ -127,7 +127,7 @@
ftpletRet = FtpletEnum.RET_DISCONNECT;
}
if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RNTO.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RNTO.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RNTO.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/RNTO.java Wed Mar 12 02:45:20 2008
@@ -74,7 +74,7 @@
return;
}
else if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
@@ -126,7 +126,7 @@
ftpletRet = FtpletEnum.RET_DISCONNECT;
}
if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/SITE.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/SITE.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/SITE.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/SITE.java Wed Mar 12 02:45:20 2008
@@ -66,7 +66,7 @@
return;
}
else if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOR.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOR.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOR.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOR.java Wed Mar 12 02:45:20 2008
@@ -100,7 +100,7 @@
return;
}
else if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
@@ -177,7 +177,7 @@
ftpletRet = FtpletEnum.RET_DISCONNECT;
}
if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOU.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOU.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOU.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/STOU.java Wed Mar 12 02:45:20 2008
@@ -90,7 +90,7 @@
return;
}
else if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
@@ -192,7 +192,7 @@
ftpletRet = FtpletEnum.RET_DISCONNECT;
}
if(ftpletRet == FtpletEnum.RET_DISCONNECT) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
return;
}
Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/USER.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/USER.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/USER.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/USER.java Wed Mar 12 02:45:20 2008
@@ -142,7 +142,7 @@
// if not ok - close connection
if(!success) {
- session.closeOnFlush();
+ session.closeOnFlush().awaitUninterruptibly(10000);
}
}
}
Modified: mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ftplet/FtpLetThrowIOExceptionTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ftplet/FtpLetThrowIOExceptionTest.java?rev=636265&r1=636264&r2=636265&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ftplet/FtpLetThrowIOExceptionTest.java (original)
+++ mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ftplet/FtpLetThrowIOExceptionTest.java Wed Mar 12 02:45:20 2008
@@ -19,9 +19,11 @@
package org.apache.ftpserver.ftplet;
+import java.io.IOException;
+
public class FtpLetThrowIOExceptionTest extends FtpLetThrowFtpExceptionTest {
- protected void throwException() {
- throw new RuntimeException();
+ protected void throwException() throws IOException {
+ throw new IOException();
}
}