You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2006/06/22 21:59:39 UTC
svn commit: r416456 - in /tomcat/tc6.0.x/trunk/java/org/apache:
coyote/http11/InternalNioInputBuffer.java tomcat/util/net/NioEndpoint.java
Author: fhanik
Date: Thu Jun 22 12:59:39 2006
New Revision: 416456
URL: http://svn.apache.org/viewvc?rev=416456&view=rev
Log:
Catch the cancelled key exceptions and act appropriately
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=416456&r1=416455&r2=416456&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Thu Jun 22 12:59:39 2006
@@ -32,6 +32,7 @@
import java.nio.channels.SelectionKey;
import org.apache.tomcat.util.net.NioEndpoint.KeyAttachment;
import org.apache.tomcat.util.net.NioEndpoint.Poller;
+import java.nio.channels.CancelledKeyException;
/**
* Implementation of InputBuffer which provides HTTP request header parsing as
@@ -564,13 +565,21 @@
if ( !timedOut && nRead == 0 )
try {
final SelectionKey key = socket.keyFor(poller.getSelector());
- KeyAttachment att = (KeyAttachment)key.attachment();
+ final KeyAttachment att = (KeyAttachment)key.attachment();
att.setWakeUp(true);
poller.addEvent(
new Runnable() {
public void run() {
- if ( key != null ) key.interestOps(SelectionKey.OP_READ);
+ try {
+ if (key != null) key.interestOps(SelectionKey.OP_READ);
+ } catch (CancelledKeyException ckx) {
+ try {
+ socket.socket().close();
+ socket.close();
+ att.setWakeUp(false);
+ } catch (Exception ignore) {}
+ }
}
});
synchronized (att.getMutex()) { att.getMutex().wait(25);}
Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=416456&r1=416455&r2=416456&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Thu Jun 22 12:59:39 2006
@@ -1106,7 +1106,14 @@
if ( att != null ) att.setWakeUp(false);
Runnable r = new Runnable() {
public void run() {
- if ( key != null ) key.interestOps(SelectionKey.OP_READ);
+ try {
+ if (key != null) key.interestOps(SelectionKey.OP_READ);
+ }catch ( CancelledKeyException ckx ) {
+ try {
+ socket.socket().close();
+ socket.close();
+ } catch ( Exception ignore ) {}
+ }
}
};
addEvent(r);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org