Author: remm
Date: Wed May 27 17:45:31 2015
New Revision: 1682087
URL: http://svn.apache.org/r1682087
Log:
Avoid IO peeking with NIO2 to read the request line (introduced in r1681742),
as the processor and its buffer is no longer associated and may not be the one
processing the request.
Modified:
tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.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/http11/Http11InputBuffer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java?rev=1682087&r1=1682086&r2=1682087&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Wed May
27 17:45:31 2015
@@ -398,6 +398,9 @@ public class Http11InputBuffer implement
// Haven't read any request data yet so use the
keep-alive
// timeout.
wrapper.setReadTimeout(wrapper.getEndpoint().getKeepAliveTimeout());
+ if (!wrapper.isNonBlocking()) {
+ return false;
+ }
}
if (!fill(false)) {
// A read is pending, so no longer in initial state
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=1682087&r1=1682086&r2=1682087&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Wed May 27
17:45:31 2015
@@ -1316,6 +1316,10 @@ public class Nio2Endpoint extends Abstra
}
}
+ @Override
+ public boolean isNonBlocking() {
+ return false;
+ }
/*
* This should only be called from a thread that currently holds a lock
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=1682087&r1=1682086&r2=1682087&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Wed May
27 17:45:31 2015
@@ -266,6 +266,9 @@ public abstract class SocketWrapperBase<
public SocketBufferHandler getSocketBufferHandler() { return
socketBufferHandler; }
public abstract boolean isReadPending();
public abstract boolean isWritePending();
+ public boolean isNonBlocking() {
+ return true;
+ }
public boolean hasDataToWrite() {
return !socketBufferHandler.isWriteBufferEmpty() ||
bufferedWrites.size() > 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]