You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rd...@apache.org on 2009/03/16 09:59:41 UTC

svn commit: r754852 - /james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapRequestHandler.java

Author: rdonkin
Date: Mon Mar 16 08:59:41 2009
New Revision: 754852

URL: http://svn.apache.org/viewvc?rev=754852&view=rev
Log:
Session needs to be logged out in all exit cases. IMAP-67 https://issues.apache.org/jira/browse/IMAP-67

Modified:
    james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapRequestHandler.java

Modified: james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapRequestHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapRequestHandler.java?rev=754852&r1=754851&r2=754852&view=diff
==============================================================================
--- james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapRequestHandler.java (original)
+++ james/protocols/imap/trunk/seda/src/main/java/org/apache/james/imap/main/ImapRequestHandler.java Mon Mar 16 08:59:41 2009
@@ -102,6 +102,7 @@
             } catch (ProtocolException e) {
                 logger.debug("Unexpected end of line. Cannot handle request: ",
                         e);
+                abandon(output, session);
                 return false;
             }
 
@@ -123,14 +124,13 @@
                         logger.info("Fault during clean up: " + e.getMessage());
                     }
                     logger.debug("Abandoning after fault in clean up", e);
-                    session.logout();
-                    abandon(output);
+                    abandon(output, session);
                 }
 
                 result = !(ImapSessionState.LOGOUT == session.getState());
             } else {
                 result = false;
-                abandon(output);
+                abandon(output, session);
             }
         }
         return result;
@@ -156,7 +156,14 @@
         return selectedMailboxIsDeleted;
     }
 
-    private void abandon(OutputStream out) {
+    private void abandon(OutputStream out, ImapSession session) {
+        if (session != null){
+            try {
+                session.logout();
+            } catch (Throwable t) {
+                getLog().warn("Session logout failed. Resources may not be correctly recycled.");
+            }
+        }
         try {
             out.write(ABANDON_SIGNOFF);
         } catch (Throwable t) {



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org