Author: markt
Date: Thu Nov 12 12:49:33 2015
New Revision: 1714031
URL: http://svn.apache.org/viewvc?rev=1714031&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=58605
Provide a value for request.getProtocol()
Ensure access log reports HTTP/1.1 upgrade and initial HTTP/2.0 request
separately.
Modified:
tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1714031&r1=1714030&r2=1714031&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Thu Nov 12
12:49:33 2015
@@ -1032,6 +1032,11 @@ public class Http11Processor extends Abs
if (upgradeProtocol.accept(request)) {
// TODO Figure out how to handle request bodies at this
// point.
+
response.setStatus(HttpServletResponse.SC_SWITCHING_PROTOCOLS);
+ response.setHeader("Connection", "Upgrade");
+ response.setHeader("Upgrade", requestedProtocol);
+ action(ActionCode.CLOSE, null);
+ getAdapter().log(request, response, 0);
InternalHttpUpgradeHandler upgradeHandler =
upgradeProtocol.getInternalUpgradeHandler(
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=1714031&r1=1714030&r2=1714031&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Thu Nov
12 12:49:33 2015
@@ -95,8 +95,6 @@ public class Http2UpgradeHandler extends
private static final byte[] GOAWAY = { 0x07, 0x00, 0x00, 0x00, 0x00, 0x00
};
private static final String HTTP2_SETTINGS_HEADER = "HTTP2-Settings";
- private static final byte[] HTTP2_UPGRADE_ACK = ("HTTP/1.1 101 Switching
Protocols\r\n" +
- "Connection: Upgrade\r\nUpgrade:
h2c\r\n\r\n").getBytes(StandardCharsets.ISO_8859_1);
private static final HeaderSink HEADER_SINK = new HeaderSink();
@@ -192,10 +190,6 @@ public class Http2UpgradeHandler extends
// The initial HTTP/1.1 request is available as Stream 1.
try {
- // Acknowledge the upgrade request
- socketWrapper.write(true, HTTP2_UPGRADE_ACK, 0,
HTTP2_UPGRADE_ACK.length);
- socketWrapper.flush(true);
-
// Process the initial settings frame
stream = getStream(1, true);
String base64Settings =
stream.getCoyoteRequest().getHeader(HTTP2_SETTINGS_HEADER);
@@ -209,7 +203,7 @@ public class Http2UpgradeHandler extends
long value = ByteUtil.getFourBytes(settings, (i * 6) + 2);
remoteSettings.set(Setting.valueOf(id), value);
}
- } catch (Http2Exception | IOException ioe) {
+ } catch (Http2Exception e) {
throw new ProtocolException(
sm.getString("upgradeHandler.upgrade.fail",
connectionId));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]