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: [email protected]
For additional commands, e-mail: [email protected]