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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org