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 bt...@apache.org on 2019/11/04 02:30:00 UTC

[james-project] 02/10: JAMES-2941 Return NO when an IMAP command unexpectedly fails

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 55d09c779ed5011026ea3a07113c93b8f3c16d2d
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Tue Oct 29 16:12:53 2019 +0100

    JAMES-2941 Return NO when an IMAP command unexpectedly fails
---
 .../org/apache/james/imap/processor/AbstractMailboxProcessor.java   | 3 +++
 .../org/apache/james/jmap/cassandra/CassandraImapErrorTest.java     | 6 +++---
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
index 69f4161..fcebc73 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
@@ -115,6 +115,9 @@ public abstract class AbstractMailboxProcessor<M extends ImapRequest> extends Ab
             }
         } catch (DeniedAccessOnSharedMailboxException e) {
             no(command, tag, responder, HumanReadableText.DENIED_SHARED_MAILBOX);
+        } catch (Exception unexpectedException) {
+            LOGGER.error("Unexpected error during IMAP processing", unexpectedException);
+            no(command, tag, responder, HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING);
         }
     }
 
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
index 3f4c4d1..f152a12 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
@@ -40,7 +40,6 @@ import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.utils.DataProbeImpl;
 
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import io.restassured.RestAssured;
@@ -75,7 +74,6 @@ class CassandraImapErrorTest {
     }
 
     @Test
-    @Disabled
     void causingMajorIssueDuringIMAPSessionShouldEndWithNo(GuiceJamesServer server) throws Exception {
         IMAPClient imapClient = new IMAPClient();
         try {
@@ -87,7 +85,9 @@ class CassandraImapErrorTest {
 
             boolean isSelected = imapClient.select("INBOX");
             assertThat(isSelected).isFalse();
-            assertThat(imapClient.getReplyString()).startsWith("NO ");
+            String[] replyChunks = imapClient.getReplyString().split(" ");
+            assertThat(replyChunks).hasSizeGreaterThanOrEqualTo(2);
+            assertThat(replyChunks[1]).isEqualTo("NO");
         } finally {
             imapClient.disconnect();
             cassandraExtension.unpause();


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