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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org