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