You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ak...@apache.org on 2008/02/12 04:50:53 UTC

svn commit: r620698 - /mina/asyncweb/trunk/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java

Author: akarasulu
Date: Mon Feb 11 19:50:53 2008
New Revision: 620698

URL: http://svn.apache.org/viewvc?rev=620698&view=rev
Log:
Bug fix for improper session closure for clients using keep-alive while idling notification is in effect

Modified:
    mina/asyncweb/trunk/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java

Modified: mina/asyncweb/trunk/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java
URL: http://svn.apache.org/viewvc/mina/asyncweb/trunk/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java?rev=620698&r1=620697&r2=620698&view=diff
==============================================================================
--- mina/asyncweb/trunk/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java (original)
+++ mina/asyncweb/trunk/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java Mon Feb 11 19:50:53 2008
@@ -133,7 +133,7 @@
      */
     public void sessionIdle( IdleStatus idleType )
     {
-        if ( session.getIdleCount( idleType ) == 1 )
+        if ( session.getIdleCount( idleType ) >= 1 )
         {
             //      // FIXME currentRequest is always null now; we need to cooperate with a decoder.
             //      if (currentContext != null) {
@@ -141,6 +141,8 @@
             //        handleReadFailure(currentContext, HttpResponseStatus.REQUEST_TIMEOUT, "Timeout while reading request");
             //      } else {
 
+        	LOG.debug( "Session idle detected on context {} with idleType {}", currentContext, idleType );
+        	
             if ( currentContext != null )
             {
                 if ( IdleStatus.BOTH_IDLE == idleType || IdleStatus.READER_IDLE == idleType )
@@ -148,18 +150,19 @@
                     currentContext.fireClientIdle( session.getLastReaderIdleTime(), session.getReaderIdleCount() );
                 }
             }
-
-            // TODO - look further into this - it may present serious issues when dealing with HTTP/1.1 
-            LOG.info( "Idled with no current request. Scheduling closure when pipeline empties" );
-            pipeline.runWhenEmpty( new Runnable()
+            else
             {
-                public void run()
-                {
-                    LOG.info( "Pipeline empty after idle. Closing session" );
-                    session.close();
-                }
-            });
-            //      }
+	            // TODO - look further into this - it may present serious issues when dealing with HTTP/1.1 
+	            LOG.info( "Idled with no current request. Scheduling closure when pipeline empties" );
+	            pipeline.runWhenEmpty( new Runnable()
+	            {
+	                public void run()
+	                {
+	                    LOG.info( "Pipeline empty after idle. Closing session" );
+	                    session.close();
+	                }
+	            });
+            }
         }
     }