Author: markt Date: Thu Jan 8 13:11:31 2015 New Revision: 1650286 URL: http://svn.apache.org/r1650286 Log: Differentiate between checking to see if OutputBuffer has data to write and isReady() (for write). The later requires a write registration if it is not ready.
Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java?rev=1650286&r1=1650285&r2=1650286&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java Thu Jan 8 13:11:31 2015 @@ -586,7 +586,7 @@ public class AjpProcessor<S> extends Abs } case NB_WRITE_INTEREST: { AtomicBoolean isReady = (AtomicBoolean)param; - boolean result = !socketWrapper.hasDataToWrite() && responseMsgPos == -1; + boolean result = socketWrapper.isReadyForWrite() && responseMsgPos == -1; isReady.set(result); if (!result) { registerForEvent(false, true); Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java?rev=1650286&r1=1650285&r2=1650286&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java Thu Jan 8 13:11:31 2015 @@ -72,7 +72,7 @@ public class UpgradeServletOutputStream // Make sure isReady() and onWritePossible() have a consistent view of // buffer and fireListener when determining if the listener should fire synchronized (fireListenerLock) { - boolean result = !socketWrapper.hasDataToWrite(); + boolean result = socketWrapper.isReadyForWrite(); fireListener = !result; return result; } @@ -170,7 +170,7 @@ public class UpgradeServletOutputStream // should fire boolean fire = false; synchronized (fireListenerLock) { - if (!socketWrapper.hasDataToWrite() && fireListener) { + if (socketWrapper.isReadyForWrite() && fireListener) { fireListener = false; fire = true; } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1650286&r1=1650285&r2=1650286&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 8 13:11:31 2015 @@ -1268,6 +1268,16 @@ public class Nio2Endpoint extends Abstra @Override + public boolean isReadyForWrite() { + boolean result = super.isReadyForWrite(); + if (!result) { + writeInterest = true; + } + return result; + } + + + @Override public void registerWriteInterest() { synchronized (writeCompletionHandler) { if (writePending.availablePermits() == 0) { Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1650286&r1=1650285&r2=1650286&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Thu Jan 8 13:11:31 2015 @@ -198,6 +198,9 @@ public abstract class SocketWrapperBase< return hasMoreDataToFlush() || hasBufferedData(); } + public boolean isReadyForWrite() { + return !hasDataToWrite(); + } public void addDispatch(DispatchType dispatchType) { synchronized (dispatches) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org