Author: remm
Date: Wed Sep  2 17:27:11 2015
New Revision: 1700854

URL: http://svn.apache.org/r1700854
Log:
Add a sendfile override on the request, since HTTP/2 doesn't support it (it's 
not just in SSL). HTTP/2 could have simulated sendfile eventually.

Modified:
    tomcat/trunk/java/org/apache/catalina/connector/Request.java
    tomcat/trunk/java/org/apache/coyote/Request.java
    tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
    tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java
    tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java

Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1700854&r1=1700853&r2=1700854&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Wed Sep  2 
17:27:11 2015
@@ -3310,7 +3310,7 @@ public class Request
                     public Object get(Request request, String name) {
                         return Boolean.valueOf(
                                 request.getConnector().getProtocolHandler(
-                                        ).isSendfileSupported());
+                                        ).isSendfileSupported() && 
request.getCoyoteRequest().getSendfile());
                     }
                     @Override
                     public void set(Request request, String name, Object 
value) {

Modified: tomcat/trunk/java/org/apache/coyote/Request.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/Request.java?rev=1700854&r1=1700853&r2=1700854&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/Request.java (original)
+++ tomcat/trunk/java/org/apache/coyote/Request.java Wed Sep  2 17:27:11 2015
@@ -140,6 +140,7 @@ public final class Request {
 
     private final RequestInfo reqProcessorMX=new RequestInfo(this);
 
+    private boolean sendfile = true;
 
     protected volatile ReadListener listener;
 
@@ -422,6 +423,14 @@ public final class Request {
         this.available = available;
     }
 
+    public boolean getSendfile() {
+        return sendfile;
+    }
+
+    public void setSendfile(boolean sendfile) {
+        this.sendfile = sendfile;
+    }
+
     public boolean isFinished() {
         AtomicBoolean result = new AtomicBoolean(false);
         action(ActionCode.REQUEST_BODY_FULLY_READ, result);
@@ -522,6 +531,7 @@ public final class Request {
         localPort = -1;
         remotePort = -1;
         available = 0;
+        sendfile = true;
 
         serverCookies.recycle();
         parameters.recycle();

Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java?rev=1700854&r1=1700853&r2=1700854&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Wed Sep  
2 17:27:11 2015
@@ -295,7 +295,7 @@ public class Http2UpgradeHandler extends
                 result = SocketState.UPGRADED;
                 break;
 
-                case OPEN_WRITE:
+            case OPEN_WRITE:
                 processWrites();
 
                 result = SocketState.UPGRADED;

Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java?rev=1700854&r1=1700853&r2=1700854&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Wed Sep  2 
17:27:11 2015
@@ -54,6 +54,8 @@ public class StreamProcessor extends Abs
     @Override
     public void run() {
         try {
+            // No sendfile for HTTP/2
+            request.setSendfile(false);
             adapter.service(request, response);
             // Ensure the response is complete
             response.action(ActionCode.CLOSE, null);

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java?rev=1700854&r1=1700853&r2=1700854&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java Wed 
Sep  2 17:27:11 2015
@@ -97,11 +97,6 @@ public abstract class AbstractJsseEndpoi
                     certificate.setSslContextWrapper(sslContextWrapper);
                 }
             }
-            // For now, sendfile is not supported with SSL
-            if (getUseSendfile()) {
-                    super.setUseSendfile(false);
-                    log.warn(sm.getString("endpoint.noSendfileWithSSL"));
-                }
 
         }
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to