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 no...@apache.org on 2011/01/12 11:19:21 UTC

svn commit: r1058048 - /james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java

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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org