You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/01/13 16:48:01 UTC

svn commit: r1651388 - in /tomcat/trunk/java/org/apache/coyote/http11: AbstractHttp11Processor.java Http11AprProcessor.java Http11Nio2Processor.java Http11NioProcessor.java

Author: markt
Date: Tue Jan 13 15:48:01 2015
New Revision: 1651388

URL: http://svn.apache.org/r1651388
Log:
Use same handling for incomplete reads now all InputBuffers support
non-blcoking reading of request line and headers. Pull method up into
base class to reduce duplication.

Modified:
    tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.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=1651388&r1=1651387&r2=1651388&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Tue Jan 13 15:48:01 2015
@@ -902,15 +902,6 @@ public abstract class AbstractHttp11Proc
 
 
     /**
-     * Defines how a connector handles an incomplete request line read.
-     *
-     * @return <code>true</code> if the processor should break out of the
-     *         processing loop, otherwise <code>false</code>.
-     */
-    protected abstract boolean handleIncompleteRequestLineRead();
-
-
-    /**
      * Set the socket timeout.
      */
     protected abstract void setSocketTimeout(int timeout) throws IOException;
@@ -1145,6 +1136,39 @@ public abstract class AbstractHttp11Proc
     }
 
 
+    private boolean handleIncompleteRequestLineRead() {
+        // Haven't finished reading the request so keep the socket
+        // open
+        openSocket = true;
+        // Check to see if we have read any of the request line yet
+        if (getInputBuffer().getParsingRequestLinePhase() < 1) {
+            if (keptAlive) {
+                // Haven't read the request line and have previously processed a
+                // request. Must be keep-alive. Make sure poller uses keepAlive.
+                socketWrapper.setTimeout(endpoint.getKeepAliveTimeout());
+            }
+        } else {
+            // Started to read request line.
+            if (request.getStartTime() < 0) {
+                request.setStartTime(System.currentTimeMillis());
+            }
+            if (endpoint.isPaused()) {
+                // Partially processed the request so need to respond
+                response.setStatus(503);
+                setErrorState(ErrorState.CLOSE_CLEAN, null);
+                getAdapter().log(request, response, 0);
+                return false;
+            } else {
+                // Need to keep processor associated with socket
+                readComplete = false;
+                // Make sure poller uses soTimeout from here onwards
+                socketWrapper.setTimeout(endpoint.getSoTimeout());
+            }
+        }
+        return true;
+    }
+
+
     private void checkExpectationAndResponseStatus() {
         if (expectation && (response.getStatus() < 200 || response.getStatus() > 299)) {
             // Client sent Expect: 100-continue but received a

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1651388&r1=1651387&r2=1651388&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Tue Jan 13 15:48:01 2015
@@ -92,17 +92,6 @@ public class Http11AprProcessor extends
 
     // --------------------------------------------------------- Public Methods
 
-
-    @Override
-    protected boolean handleIncompleteRequestLineRead() {
-        // This means that no data is available right now
-        // (long keepalive), so that the processor should be recycled
-        // and the method should return true
-        openSocket = true;
-        return true;
-    }
-
-
     @Override
     protected void setSocketTimeout(int timeout) {
         Socket.timeoutSet(socketWrapper.getSocket().longValue(), timeout * 1000);

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java?rev=1651388&r1=1651387&r2=1651388&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java Tue Jan 13 15:48:01 2015
@@ -122,41 +122,6 @@ public class Http11Nio2Processor extends
 
 
     @Override
-    protected boolean handleIncompleteRequestLineRead() {
-        // Haven't finished reading the request so keep the socket
-        // open
-        openSocket = true;
-        // Check to see if we have read any of the request line yet
-        if (((InternalNio2InputBuffer)
-                getInputBuffer()).getParsingRequestLinePhase() < 1) {
-            if (keptAlive) {
-                // Haven't read the request line and have previously processed a
-                // request. Must be keep-alive. Make sure poller uses keepAlive.
-                socketWrapper.setTimeout(endpoint.getKeepAliveTimeout());
-            }
-        } else {
-            // Started to read request line.
-            if (request.getStartTime() < 0) {
-                request.setStartTime(System.currentTimeMillis());
-            }
-            if (endpoint.isPaused()) {
-                // Partially processed the request so need to respond
-                response.setStatus(503);
-                setErrorState(ErrorState.CLOSE_CLEAN, null);
-                getAdapter().log(request, response, 0);
-                return false;
-            } else {
-                // Need to keep processor associated with socket
-                readComplete = false;
-                // Make sure poller uses soTimeout from here onwards
-                socketWrapper.setTimeout(endpoint.getSoTimeout());
-            }
-        }
-        return true;
-    }
-
-
-    @Override
     protected void setSocketTimeout(int timeout) throws IOException {
         socketWrapper.setTimeout(timeout);
     }

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1651388&r1=1651387&r2=1651388&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Tue Jan 13 15:48:01 2015
@@ -116,37 +116,6 @@ public class Http11NioProcessor extends
 
 
     @Override
-    protected boolean handleIncompleteRequestLineRead() {
-        // Haven't finished reading the request so keep the socket
-        // open
-        openSocket = true;
-        // Check to see if we have read any of the request line yet
-        if (((InternalNioInputBuffer)
-                getInputBuffer()).getParsingRequestLinePhase() < 2) {
-            if (keptAlive) {
-                // Haven't read the request line and have previously processed a
-                // request. Must be keep-alive. Make sure poller uses keepAlive.
-                socketWrapper.setTimeout(endpoint.getKeepAliveTimeout());
-            }
-        } else {
-            if (endpoint.isPaused()) {
-                // Partially processed the request so need to respond
-                response.setStatus(503);
-                setErrorState(ErrorState.CLOSE_CLEAN, null);
-                getAdapter().log(request, response, 0);
-                return false;
-            } else {
-                // Need to keep processor associated with socket
-                readComplete = false;
-                // Make sure poller uses soTimeout from here onwards
-                socketWrapper.setTimeout(endpoint.getSoTimeout());
-            }
-        }
-        return true;
-    }
-
-
-    @Override
     protected void setSocketTimeout(int timeout) throws IOException {
         socketWrapper.getSocket().getIOChannel().socket().setSoTimeout(timeout);
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org