Author: markt
Date: Fri May 10 19:53:12 2013
New Revision: 1481165
URL: http://svn.apache.org/r1481165
Log:
Only register for write when using non-blocking and there is more data to
write. This fixes various crashes in APR due to trying to add the same socket
to the poller twice.
Modified:
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
Modified:
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1481165&r1=1481164&r2=1481165&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Fri
May 10 19:53:12 2013
@@ -1057,8 +1057,6 @@ public abstract class AbstractHttp11Proc
rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
- registerForWrite();
-
if (error || endpoint.isPaused()) {
return SocketState.CLOSED;
} else if (isAsync() || comet) {
@@ -1612,7 +1610,6 @@ public abstract class AbstractHttp11Proc
if (error) {
return SocketState.CLOSED;
} else if (isAsync()) {
- registerForWrite();
return SocketState.LONG;
} else {
if (!keepAlive) {
Modified:
tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java?rev=1481165&r1=1481164&r2=1481165&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java Fri
May 10 19:53:12 2013
@@ -153,6 +153,10 @@ public class InternalNioOutputBuffer ext
bytebuffer.clear();
flipped = false;
}
+ if (flipped) {
+ // Still have data to write
+ att.getPoller().add(socket, SelectionKey.OP_WRITE);
+ }
return written;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]