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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org