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: [email protected]
For additional commands, e-mail: [email protected]