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