Author: markt Date: Mon Sep 5 15:21:22 2011 New Revision: 1165331 URL: http://svn.apache.org/viewvc?rev=1165331&view=rev Log: Complete alignment of process() for finishing requests
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/Http11NioProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.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=1165331&r1=1165330&r2=1165331&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Mon Sep 5 15:21:22 2011 @@ -94,6 +94,11 @@ public abstract class AbstractHttp11Proc /** + * Flag that indicates if the request headers have been completely read. + */ + protected boolean readComplete = true; + + /** * HTTP/1.1 flag. */ protected boolean http11 = true; 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=1165331&r1=1165330&r2=1165331&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Mon Sep 5 15:21:22 2011 @@ -183,6 +183,7 @@ public class Http11AprProcessor extends comet = false; openSocket = false; sendfileInProgress = false; + readComplete = true; int soTimeout = endpoint.getSoTimeout(); @@ -320,7 +321,7 @@ public class Http11AprProcessor extends rp.setStage(org.apache.coyote.Constants.STAGE_KEEPALIVE); if (breakKeepAliveLoop(socketWrapper)) { - break; + break; } } @@ -334,10 +335,17 @@ public class Http11AprProcessor extends if (sendfileInProgress) { return SocketState.SENDFILE; } else { - return (openSocket) ? SocketState.OPEN : SocketState.CLOSED; + if (openSocket) { + if (readComplete) { + return SocketState.OPEN; + } else { + return SocketState.LONG; + } + } else { + return SocketState.CLOSED; + } } } - } 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=1165331&r1=1165330&r2=1165331&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Mon Sep 5 15:21:22 2011 @@ -212,6 +212,7 @@ public class Http11NioProcessor extends comet = false; openSocket = false; sendfileInProgress = false; + readComplete = true; int soTimeout = endpoint.getSoTimeout(); @@ -220,7 +221,6 @@ public class Http11NioProcessor extends } boolean keptAlive = false; - boolean readComplete = true; while (!error && keepAlive && !comet && !isAsync() && !endpoint.isPaused()) { //always default to our soTimeout @@ -382,24 +382,37 @@ public class Http11NioProcessor extends rp.setStage(org.apache.coyote.Constants.STAGE_KEEPALIVE); if (breakKeepAliveLoop(socketWrapper)) { - break; + break; } } rp.setStage(org.apache.coyote.Constants.STAGE_ENDED); + if (error || endpoint.isPaused()) { return SocketState.CLOSED; } else if (comet || isAsync()) { return SocketState.LONG; } else { - return (openSocket) ? (readComplete?SocketState.OPEN:SocketState.LONG) : SocketState.CLOSED; + if (sendfileInProgress) { + return SocketState.SENDFILE; + } else { + if (openSocket) { + if (readComplete) { + return SocketState.OPEN; + } else { + return SocketState.LONG; + } + } else { + return SocketState.CLOSED; + } + } } } @Override protected boolean breakKeepAliveLoop( - SocketWrapper<NioChannel> socketWrapper) { + SocketWrapper<NioChannel> socketWrapper) { // Do sendfile as needed: add socket to sendfile and end if (sendfileData != null && !error) { ((KeyAttachment) socketWrapper).setSendfileData(sendfileData); @@ -411,7 +424,7 @@ public class Http11NioProcessor extends (KeyAttachment) socketWrapper, true, true); return true; } - return false; + return false; } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1165331&r1=1165330&r2=1165331&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Mon Sep 5 15:21:22 2011 @@ -147,6 +147,7 @@ public class Http11Processor extends Abs comet = false; openSocket = false; sendfileInProgress = false; + readComplete = true; int soTimeout = endpoint.getSoTimeout(); @@ -315,22 +316,31 @@ public class Http11Processor extends Abs rp.setStage(org.apache.coyote.Constants.STAGE_KEEPALIVE); if (breakKeepAliveLoop(socketWrapper)) { - break; + break; } } rp.setStage(org.apache.coyote.Constants.STAGE_ENDED); + if (error || endpoint.isPaused()) { return SocketState.CLOSED; - } else if (isAsync()) { + } else if (comet || isAsync()) { return SocketState.LONG; } else { - if (!keepAlive) { - return SocketState.CLOSED; + if (sendfileInProgress) { + return SocketState.SENDFILE; } else { - return SocketState.OPEN; + if (openSocket) { + if (readComplete) { + return SocketState.OPEN; + } else { + return SocketState.LONG; + } + } else { + return SocketState.CLOSED; + } } - } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org