On 27/05/2015 18:45, [email protected] wrote:
> 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.

Are you sure this is necessary? If a non-blocking read is issued the
read is into the read buffer in the socket wrapper not directly into the
Http11InputBuffer.

Mark


> 
> 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]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to