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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to