Author: norman
Date: Wed Jan 12 10:19:20 2011
New Revision: 1058048

URL: http://svn.apache.org/viewvc?rev=1058048&view=rev
Log:
Only try to parse data and transform to ImapMessage if the Command is valid for 
the state. See IMAP-240

Modified:
    
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java

Modified: 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java?rev=1058048&r1=1058047&r2=1058048&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
 (original)
+++ 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
 Wed Jan 12 10:19:20 2011
@@ -113,15 +113,18 @@ public abstract class AbstractImapComman
      */
     public final ImapMessage parse(ImapRequestLineReader request, String tag, 
Log logger, ImapSession session) {
         ImapMessage result;
-        try {
-
-            ImapMessage message = decode(command, request, tag, logger, 
session);
-            result = message;
-
-        } catch (DecodingException e) {
-            logger.debug("Cannot parse protocol ", e);
-            e.printStackTrace();
-            result = messageFactory.taggedBad(tag, command, e.getKey());
+        if (!command.validForState(session.getState())) {
+            result = statusResponseFactory.taggedNo(tag, command,
+                    HumanReadableText.INVALID_COMMAND);
+        } else {
+            try {
+           
+                result = decode(command, request, tag, logger, session);
+            } catch (DecodingException e) {
+                logger.debug("Cannot parse protocol ", e);
+                e.printStackTrace();
+                result = messageFactory.taggedBad(tag, command, e.getKey());
+            }
         }
         return result;
     }



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

Reply via email to