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/04/19 14:27:53 UTC

svn commit: r1095057 - in /james/imap/trunk: api/src/main/java/org/apache/james/imap/api/process/ processor/src/main/java/org/apache/james/imap/processor/ processor/src/main/java/org/apache/james/imap/processor/base/

Author: norman
Date: Tue Apr 19 12:27:53 2011
New Revision: 1095057

URL: http://svn.apache.org/viewvc?rev=1095057&view=rev
Log:
EXPUNGE responses are lost if multiple sessions are open and a FETCH/STORE/SEARCH command is triggered. See IMAP-286

Modified:
    james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java

Modified: james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java?rev=1095057&r1=1095056&r2=1095057&view=diff
==============================================================================
--- james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java (original)
+++ james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java Tue Apr 19 12:27:53 2011
@@ -132,6 +132,7 @@ public interface SelectedMailbox {
      */
     public void resetRecentUidRemoved();
 
+
     /**
      * Reset all events
      */
@@ -144,6 +145,9 @@ public interface SelectedMailbox {
      */
     public Collection<Long> expungedUids();
 
+    
+    public void resetExpungedUids();
+    
     /**
      * Removes the given UID.
      * 

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java?rev=1095057&r1=1095056&r2=1095057&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java Tue Apr 19 12:27:53 2011
@@ -123,6 +123,10 @@ abstract public class AbstractMailboxPro
         // Expunged messages
         if (!omitExpunged) {
             addExpungedResponses(selected, responder);
+            
+            // Only reset the events if we send the EXPUNGE responses. See IMAP-286
+            selected.expungedUids();
+
         }
         if (sizeChanged || (selected.isRecentUidRemoved() && !omitExpunged)) {
             addRecentResponses(selected, responder);
@@ -131,11 +135,8 @@ abstract public class AbstractMailboxPro
 
         // Message updates
         addFlagsResponses(session, selected, responder, useUid);
-
-        // Only reset the events if we send the EXPUNGE responses. See IMAP-286
-        if (!omitExpunged) {
-            selected.resetEvents();
-        }
+        
+        selected.resetEvents();
     }
 
     private void addExpungedResponses(final SelectedMailbox selected, final ImapProcessor.Responder responder) {

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java?rev=1095057&r1=1095056&r2=1095057&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java Tue Apr 19 12:27:53 2011
@@ -172,9 +172,12 @@ public class MailboxEventAnalyser extend
     public synchronized void reset() {
         sizeChanged = false;
         flagUpdateUids.clear();
-        expungedUids.clear();
         isDeletedByOtherSession = false;
     }
+    
+    public synchronized void resetExpungedUids() {
+        expungedUids.clear();
+    }
 
     /**
      * Are flag changes from current session ignored?
@@ -278,4 +281,5 @@ public class MailboxEventAnalyser extend
     protected synchronized boolean isListenerClosed() {
         return closed;
     }
+
 }

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java?rev=1095057&r1=1095056&r2=1095057&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java Tue Apr 19 12:27:53 2011
@@ -250,4 +250,12 @@ public class SelectedMailboxImpl impleme
     public long getLastUid() {
         return converter.getLastUid();
     }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.api.process.SelectedMailbox#resetExpungedUids()
+     */
+    public void resetExpungedUids() {
+        events.resetExpungedUids();
+    }
 }



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