Author: markt Date: Fri Jan 23 19:03:16 2015 New Revision: 1654324 URL: http://svn.apache.org/r1654324 Log: Pull up sendfileData instance and breakKeepAliveLoop method This also enabled the removal of recycleInternal()
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=1654324&r1=1654323&r2=1654324&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Fri Jan 23 19:03:16 2015 @@ -53,6 +53,7 @@ import org.apache.tomcat.util.log.UserDa import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState; import org.apache.tomcat.util.net.DispatchType; +import org.apache.tomcat.util.net.SendfileDataBase; import org.apache.tomcat.util.net.SocketStatus; import org.apache.tomcat.util.net.SocketWrapperBase; import org.apache.tomcat.util.res.StringManager; @@ -227,6 +228,12 @@ public abstract class AbstractHttp11Proc protected HttpUpgradeHandler httpUpgradeHandler = null; + /** + * Sendfile data. + */ + protected SendfileDataBase sendfileData = null; + + public AbstractHttp11Processor(int maxHttpHeaderSize, AbstractEndpoint<S> endpoint, int maxTrailerSize, int maxExtensionSize, int maxSwallowSize) { @@ -1769,10 +1776,32 @@ public abstract class AbstractHttp11Proc * Checks to see if the keep-alive loop should be broken, performing any * processing (e.g. sendfile handling) that may have an impact on whether * or not the keep-alive loop should be broken. + * * @return true if the keep-alive loop should be broken */ - protected abstract boolean breakKeepAliveLoop( - SocketWrapperBase<S> socketWrapper); + protected boolean breakKeepAliveLoop(SocketWrapperBase<S> socketWrapper) { + openSocket = keepAlive; + // Do sendfile as needed: add socket to sendfile and end + if (sendfileData != null && !getErrorState().isError()) { + sendfileData.keepAlive = keepAlive; + switch (socketWrapper.processSendfile(sendfileData)) { + case DONE: + // If sendfile is complete, no need to break keep-alive loop + return false; + case PENDING: + sendfileInProgress = true; + return true; + case ERROR: + // Write failed + if (getLog().isDebugEnabled()) { + getLog().debug(sm.getString("http11processor.sendfile.error")); + } + setErrorState(ErrorState.CLOSE_NOW, null); + return true; + } + } + return false; + } @Override @@ -1791,11 +1820,9 @@ public abstract class AbstractHttp11Proc httpUpgradeHandler = null; resetErrorState(); socketWrapper = null; - recycleInternal(); + sendfileData = null; } - protected abstract void recycleInternal(); - @Override public ByteBuffer getLeftoverInput() { 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=1654324&r1=1654323&r2=1654324&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Fri Jan 23 19:03:16 2015 @@ -21,7 +21,6 @@ import java.security.cert.CertificateFac import java.security.cert.X509Certificate; import org.apache.coyote.ActionCode; -import org.apache.coyote.ErrorState; import org.apache.coyote.http11.filters.BufferedInputFilter; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -33,7 +32,6 @@ import org.apache.tomcat.jni.Socket; import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.AprEndpoint; import org.apache.tomcat.util.net.SSLSupport; -import org.apache.tomcat.util.net.SocketWrapperBase; /** @@ -63,12 +61,6 @@ public class Http11AprProcessor extends // ----------------------------------------------------- Instance Variables /** - * Sendfile data. - */ - protected AprEndpoint.SendfileData sendfileData = null; - - - /** * When client certificate information is presented in a form other than * instances of {@link java.security.cert.X509Certificate} it needs to be * converted before it can be used and this property controls which JSSE @@ -91,32 +83,6 @@ public class Http11AprProcessor extends @Override - protected boolean breakKeepAliveLoop(SocketWrapperBase<Long> socketWrapper) { - openSocket = keepAlive; - // Do sendfile as needed: add socket to sendfile and end - if (sendfileData != null && !getErrorState().isError()) { - sendfileData.keepAlive = keepAlive; - switch (socketWrapper.processSendfile(sendfileData)) { - case DONE: - // If sendfile is complete, no need to break keep-alive loop - return false; - case PENDING: - sendfileInProgress = true; - return true; - case ERROR: - // Write failed - if (log.isDebugEnabled()) { - log.debug(sm.getString("http11processor.sendfile.error")); - } - setErrorState(ErrorState.CLOSE_NOW, null); - return true; - } - } - return false; - } - - - @Override protected void registerForEvent(boolean read, boolean write) { ((AprEndpoint) endpoint).getPoller().add( socketWrapper.getSocket().longValue(), -1, read, write); @@ -129,12 +95,6 @@ public class Http11AprProcessor extends } - @Override - public void recycleInternal() { - sendfileData = null; - } - - @Override public void setSslSupport(SSLSupport sslSupport) { // NOOP for APR 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=1654324&r1=1654323&r2=1654324&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java Fri Jan 23 19:03:16 2015 @@ -23,7 +23,6 @@ import java.net.InetSocketAddress; import javax.net.ssl.SSLEngine; import org.apache.coyote.ActionCode; -import org.apache.coyote.ErrorState; import org.apache.coyote.http11.filters.BufferedInputFilter; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -34,7 +33,6 @@ import org.apache.tomcat.util.net.Nio2En import org.apache.tomcat.util.net.SSLSupport; import org.apache.tomcat.util.net.SecureNio2Channel; import org.apache.tomcat.util.net.SocketStatus; -import org.apache.tomcat.util.net.SocketWrapperBase; /** @@ -64,14 +62,6 @@ public class Http11Nio2Processor extends } - // ----------------------------------------------------- Instance Variables - - /** - * Sendfile data. - */ - protected Nio2Endpoint.SendfileData sendfileData = null; - - // --------------------------------------------------------- Public Methods @Override @@ -119,38 +109,6 @@ public class Http11Nio2Processor extends } - @Override - protected boolean breakKeepAliveLoop(SocketWrapperBase<Nio2Channel> socketWrapper) { - openSocket = keepAlive; - // Do sendfile as needed: add socket to sendfile and end - if (sendfileData != null && !getErrorState().isError()) { - sendfileData.keepAlive = keepAlive; - switch (socketWrapper.processSendfile(sendfileData)) { - case DONE: - // If sendfile is complete, no need to break keep-alive loop - return false; - case PENDING: - sendfileInProgress = true; - return true; - case ERROR: - // Write failed - if (log.isDebugEnabled()) { - log.debug(sm.getString("http11processor.sendfile.error")); - } - setErrorState(ErrorState.CLOSE_NOW, null); - return true; - } - } - return false; - } - - - @Override - public void recycleInternal() { - sendfileData = null; - } - - // ----------------------------------------------------- ActionHook Methods /** 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=1654324&r1=1654323&r2=1654324&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Fri Jan 23 19:03:16 2015 @@ -23,7 +23,6 @@ import java.nio.channels.SelectionKey; import javax.net.ssl.SSLEngine; import org.apache.coyote.ActionCode; -import org.apache.coyote.ErrorState; import org.apache.coyote.http11.filters.BufferedInputFilter; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -32,7 +31,6 @@ import org.apache.tomcat.util.net.NioCha import org.apache.tomcat.util.net.NioEndpoint; import org.apache.tomcat.util.net.SSLSupport; import org.apache.tomcat.util.net.SecureNioChannel; -import org.apache.tomcat.util.net.SocketWrapperBase; /** @@ -64,14 +62,6 @@ public class Http11NioProcessor extends } - // ----------------------------------------------------- Instance Variables - - /** - * Sendfile data. - */ - protected NioEndpoint.SendfileData sendfileData = null; - - // --------------------------------------------------------- Public Methods @Override @@ -112,38 +102,6 @@ public class Http11NioProcessor extends } - @Override - protected boolean breakKeepAliveLoop(SocketWrapperBase<NioChannel> socketWrapper) { - openSocket = keepAlive; - // Do sendfile as needed: add socket to sendfile and end - if (sendfileData != null && !getErrorState().isError()) { - sendfileData.keepAlive = keepAlive; - switch (socketWrapper.processSendfile(sendfileData)) { - case DONE: - // If sendfile is complete, no need to break keep-alive loop - return false; - case PENDING: - sendfileInProgress = true; - return true; - case ERROR: - // Write failed - if (log.isDebugEnabled()) { - log.debug(sm.getString("http11processor.sendfile.error")); - } - setErrorState(ErrorState.CLOSE_NOW, null); - return true; - } - } - return false; - } - - - @Override - public void recycleInternal() { - sendfileData = null; - } - - // ----------------------------------------------------- ActionHook Methods /** --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org