Author: norman
Date: Mon May 31 13:57:23 2010
New Revision: 949747

URL: http://svn.apache.org/viewvc?rev=949747&view=rev
Log:
Add method to get a count of pushed LineHandlers. Fix AuthCmdHandler to work on 
AUTH LOGIN (JAMES-1011)

Modified:
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
    
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java?rev=949747&r1=949746&r2=949747&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSession.java
 Mon May 31 13:57:23 2010
@@ -133,6 +133,12 @@ public interface SMTPSession extends TLS
     void popLineHandler();
     
     /**
+     * Return the size of the pushed {...@link LineHandler}
+     * @return
+     */
+    int getPushedLineHandlerCount();
+    
+    /**
      * Sleep for the given ms 
      * 
      * @param ms the time to sleep in milliseconds

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java?rev=949747&r1=949746&r2=949747&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
 Mon May 31 13:57:23 2010
@@ -64,7 +64,6 @@ public class AuthCmdHandler
             SMTPResponse res;
             try {
                 res = handleCommand(session, new String(l,"US-ASCII"));
-                session.popLineHandler();
                 session.writeResponse(res);
             } catch (UnsupportedEncodingException e) {
                 e.printStackTrace();
@@ -81,6 +80,7 @@ public class AuthCmdHandler
             // If the server receives such an answer, it MUST reject the AUTH
             // command by sending a 501 reply."
             if (line.equals("*\r\n")) {
+                session.popLineHandler();
                 return new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, 
DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " 
Authentication aborted");
             }
             return onCommand(session, line);
@@ -239,7 +239,13 @@ public class AuthCmdHandler
             // with in the if clause below
         }
         // Authenticate user
-        return doAuthTest(session, user, pass, "PLAIN");
+        SMTPResponse response = doAuthTest(session, user, pass, "PLAIN");
+        
+        // remove all pushed linehandlers
+        for (int i = 0; i < session.getPushedLineHandlerCount(); i++) {
+            session.popLineHandler();
+        }
+        return response;
     }
 
     /**
@@ -285,8 +291,15 @@ public class AuthCmdHandler
                 pass = null;
             }
         }
+        
         // Authenticate user
-        return doAuthTest(session, user, pass, "LOGIN");
+        SMTPResponse response = doAuthTest(session, user, pass, "LOGIN");
+        
+        // remove all pushed linehandlers
+        for (int i = 0; i < session.getPushedLineHandlerCount(); i++) {
+            session.popLineHandler();
+        }
+        return response;
     }
 
 

Modified: 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java?rev=949747&r1=949746&r2=949747&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java
 (original)
+++ 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java
 Mon May 31 13:57:23 2010
@@ -187,20 +187,25 @@ public class BaseFakeSMTPSession impleme
         return log;
     }
 
-       public boolean isStartTLSSupported() {
-               return getConfigurationData().isStartTLSSupported();
-       }
+    public boolean isStartTLSSupported() {
+        return getConfigurationData().isStartTLSSupported();
+    }
 
-       public boolean isTLSStarted() {
+    public boolean isTLSStarted() {
         throw new UnsupportedOperationException("Unimplemented Stub Method");
-       }
+    }
 
-       public void startTLS() throws IOException {
+    public void startTLS() throws IOException {
         throw new UnsupportedOperationException("Unimplemented Stub Method");
 
-       }
+    }
 
-       public void writeStream(InputStream stream) {
-        throw new UnsupportedOperationException("Unimplemented Stub Method");  
        
-       }
+    public void writeStream(InputStream stream) {
+        throw new UnsupportedOperationException("Unimplemented Stub Method");
+    }
+
+    @Override
+    public int getPushedLineHandlerCount() {
+        throw new UnsupportedOperationException("Unimplemented Stub Method");  
         
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to