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