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]