You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/01/25 19:19:00 UTC

svn commit: r499879 - /jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/impl/reactor/BaseIOReactor.java

Author: olegk
Date: Thu Jan 25 10:18:59 2007
New Revision: 499879

URL: http://svn.apache.org/viewvc?view=rev&rev=499879
Log:
Fixed problem with handling cancelled sessions while re-triggering input notification for buffering sessions

Modified:
    jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/impl/reactor/BaseIOReactor.java

Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/impl/reactor/BaseIOReactor.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/impl/reactor/BaseIOReactor.java?view=diff&rev=499879&r1=499878&r2=499879
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/impl/reactor/BaseIOReactor.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/impl/reactor/BaseIOReactor.java Thu Jan 25 10:18:59 2007
@@ -32,6 +32,7 @@
 package org.apache.http.nio.impl.reactor;
 
 import java.io.IOException;
+import java.nio.channels.CancelledKeyException;
 import java.nio.channels.SelectionKey;
 import java.util.Iterator;
 import java.util.Set;
@@ -104,14 +105,18 @@
                             continue;
                         }
                     }
-                    int ops = session.getEventMask();
-                    if ((ops & EventMask.READ) > 0) {
-                        this.eventDispatch.inputReady(session);
-                        if (bufStatus != null) {
-                            if (!bufStatus.hasBufferedInput()) {
-                                it.remove();
+                    try {
+                        int ops = session.getEventMask();
+                        if ((ops & EventMask.READ) > 0) {
+                            this.eventDispatch.inputReady(session);
+                            if (bufStatus != null) {
+                                if (!bufStatus.hasBufferedInput()) {
+                                    it.remove();
+                                }
                             }
                         }
+                    } catch (CancelledKeyException ex) {
+                        it.remove();
                     }
                 }
             }