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/10/14 20:02:17 UTC
svn commit: r1183448 -
/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
Author: norman
Date: Fri Oct 14 18:02:17 2011
New Revision: 1183448
URL: http://svn.apache.org/viewvc?rev=1183448&view=rev
Log:
IdleProcessor does now remove "HeartbeatHandler" once IDLE was complete. See IMAP-348
Modified:
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java?rev=1183448&r1=1183447&r2=1183448&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/IdleProcessor.java Fri Oct 14 18:02:17 2011
@@ -28,6 +28,7 @@ import java.util.Locale;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.ImapSessionState;
@@ -86,6 +87,8 @@ public class IdleProcessor extends Abstr
idleListener = null;
}
+ final AtomicBoolean idleActive = new AtomicBoolean(true);
+
session.pushLineHandler(new ImapLineHandler() {
/**
@@ -118,6 +121,7 @@ public class IdleProcessor extends Abstr
okComplete(command, tag, responder);
}
+ idleActive.set(false);
}
});
@@ -128,7 +132,7 @@ public class IdleProcessor extends Abstr
public void run() {
// check if we need to cancel the Runnable
// See IMAP-275
- if (session.getState() != ImapSessionState.LOGOUT) {
+ if (session.getState() != ImapSessionState.LOGOUT && idleActive.get()) {
// Send a heartbeat to the client to make sure we
// reset the idle timeout. This is kind of the same
// workaround as dovecot use.
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org