You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/03/22 02:03:38 UTC

[james-project] 09/25: JAMES-3722 IMAP SELECT should return CLOSED responses upon implicit selected mailbox changes

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 e0e4f90775bc4b23e27ef394c072b1b1e40bc96a
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Mar 8 08:33:59 2022 +0700

    JAMES-3722 IMAP SELECT should return CLOSED responses upon implicit selected mailbox changes
---
 .../james/imap/processor/AbstractSelectionProcessor.java      | 11 ++++++-----
 .../org/apache/james/imapserver/netty/IMAPServerTest.java     |  1 -
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
index d6ad78a..5dfa2dc 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
@@ -116,7 +116,7 @@ abstract class AbstractSelectionProcessor<R extends AbstractMailboxSelectionRequ
             return;
         }
 
-        final MailboxMetaData metaData = selectMailbox(fullMailboxPath, session);
+        final MailboxMetaData metaData = selectMailbox(fullMailboxPath, session, responder);
         final SelectedMailbox selected = session.getSelected();
         MessageUid firstUnseen = metaData.getFirstUnseen();
         
@@ -136,7 +136,7 @@ abstract class AbstractSelectionProcessor<R extends AbstractMailboxSelectionRequ
                 LOGGER.info("Unable to uid for unseen message {} in mailbox {}", firstUnseen, selected.getMailboxId().serialize());
                 break;
             }
-            firstUnseen = selectMailbox(fullMailboxPath, session).getFirstUnseen();
+            firstUnseen = selectMailbox(fullMailboxPath, session, responder).getFirstUnseen();
             retryCount++;
             
         }
@@ -384,7 +384,7 @@ abstract class AbstractSelectionProcessor<R extends AbstractMailboxSelectionRequ
         responder.respond(existsResponse);
     }
 
-    private MailboxMetaData selectMailbox(MailboxPath mailboxPath, ImapSession session) throws MailboxException {
+    private MailboxMetaData selectMailbox(MailboxPath mailboxPath, ImapSession session, Responder responder) throws MailboxException {
         final MailboxManager mailboxManager = getMailboxManager();
         final MailboxSession mailboxSession = session.getMailboxSession();
         final MessageManager mailbox = mailboxManager.getMailbox(mailboxPath, mailboxSession);
@@ -398,8 +398,9 @@ abstract class AbstractSelectionProcessor<R extends AbstractMailboxSelectionRequ
             // Response with the CLOSE return-code when the currently selected mailbox is closed implicitly using the SELECT/EXAMINE command on another mailbox
             //
             // See rfc5162 3.7. CLOSED Response Code
-            if (currentMailbox != null) {
-                getStatusResponseFactory().untaggedOk(HumanReadableText.QRESYNC_CLOSED, ResponseCode.closed());
+            if (currentMailbox != null && EnableProcessor.getEnabledCapabilities(session).contains(ImapConstants.SUPPORTS_QRESYNC)) {
+                responder.respond(getStatusResponseFactory()
+                    .untaggedOk(HumanReadableText.QRESYNC_CLOSED, ResponseCode.closed()));
             }
             session.selected(new SelectedMailboxImpl(getMailboxManager(), eventBus, session, mailbox));
 
diff --git a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
index 8b470b5..fb2d92b 100644
--- a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
+++ b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
@@ -1731,7 +1731,6 @@ class IMAPServerTest {
                 .hasSize(1);
         }
 
-        @Disabled("JAMES-3722 Closed notifications were never sent upon implicit selected mailbox changes")
         @Test
         void implicitMailboxSelectionChangesShouldReturnClosedNotifications() throws Exception {
             memoryIntegrationResources.getMailboxManager()

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