You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2015/09/02 19:27:12 UTC
svn commit: r1700854 - in /tomcat/trunk/java/org/apache:
catalina/connector/Request.java coyote/Request.java
coyote/http2/Http2UpgradeHandler.java coyote/http2/StreamProcessor.java
tomcat/util/net/AbstractJsseEndpoint.java
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org