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