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/02/27 16:36:15 UTC

svn commit: r512310 - in /incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener: FtpProtocolHandler.java mina/MinaFtpProtocolHandler.java

Author: ngn
Date: Tue Feb 27 08:36:13 2007
New Revision: 512310

URL: http://svn.apache.org/viewvc?view=rev&rev=512310
Log:
Fixing bug where setLogout on statisics was not called during a client disconnect if using the MinaListener (FTPSERVER-76)

Modified:
    incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/FtpProtocolHandler.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/FtpProtocolHandler.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/FtpProtocolHandler.java?view=diff&rev=512310&r1=512309&r2=512310
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/FtpProtocolHandler.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/FtpProtocolHandler.java Tue Feb 27 08:36:13 2007
@@ -131,7 +131,10 @@
         // call Ftplet.onDisconnect() method.
         try {
             Ftplet ftpletContainer = serverContext.getFtpletContainer();
-            ftpletContainer.onDisconnect(session, writer);
+            
+            if(ftpletContainer != null) {
+                ftpletContainer.onDisconnect(session, writer);
+            }
         }
         catch(Exception ex) {
             LOG.warn("RequestHandler.close()", ex);
@@ -151,9 +154,15 @@
             // logout if necessary and notify statistics
             if(session.isLoggedIn()) {
                 session.setLogout();
-                ftpStat.setLogout(connection);
+                
+                if(ftpStat != null) {
+                    ftpStat.setLogout(connection);
+                }
+            }
+            
+            if(ftpStat != null) {
+                ftpStat.setCloseConnection(connection);
             }
-            ftpStat.setCloseConnection(connection);
             
             // clear request
             session.clear();

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=512310&r1=512309&r2=512310
==============================================================================
--- 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 Tue Feb 27 08:36:13 2007
@@ -37,7 +37,8 @@
  */
 public class MinaFtpProtocolHandler extends IoHandlerAdapter
 {
-    
+
+
     private static final String OUTPUT_KEY = "output";
     private static final String CONNECTION_KEY = "connection";
     
@@ -73,6 +74,14 @@
         MinaFtpResponseOutput output = (MinaFtpResponseOutput) session.getAttribute(OUTPUT_KEY);
         
         protocolHandler.onConnectionOpened(connection, (FtpSessionImpl)connection.getSession(), output);
+    }
+    
+    
+    public void sessionClosed(IoSession session) throws Exception {
+        MinaConnection connection = (MinaConnection) session.getAttribute(CONNECTION_KEY);
+        MinaFtpResponseOutput output = (MinaFtpResponseOutput) session.getAttribute(OUTPUT_KEY);
+        
+        protocolHandler.onConnectionClosed(connection, (FtpSessionImpl)connection.getSession(), output);
     }
     
     public void messageReceived( IoSession session, Object message ) throws IOException, FtpException