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/23 20:03:17 UTC
svn commit: r1654324 - in /tomcat/trunk/java/org/apache/coyote/http11:
AbstractHttp11Processor.java Http11AprProcessor.java
Http11Nio2Processor.java Http11NioProcessor.java
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org