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