OpenJDK / jdk / jdk
changeset 51231:1d8b1d4eae6a
8207959: The initial value of SETTINGS_MAX_CONCURRENT_STREAMS should have no limit
Reviewed-by: michaelm
author | chegar |
---|---|
date | Mon, 23 Jul 2018 11:47:03 +0100 |
parents | 9c1d9d1fb543 |
children | ad1fa1db73d9 |
files | src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java src/java.net.http/share/classes/jdk/internal/net/http/frame/SettingsFrame.java test/jdk/java/net/httpclient/http2/server/Http2TestServerConnection.java |
diffstat | 3 files changed, 16 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java Tue Jul 24 13:55:57 2018 +0800 +++ b/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java Mon Jul 23 11:47:03 2018 +0100 @@ -297,7 +297,7 @@ this.framesDecoder = new FramesDecoder(this::processFrame, clientSettings.getParameter(SettingsFrame.MAX_FRAME_SIZE)); // serverSettings will be updated by server - this.serverSettings = SettingsFrame.getDefaultSettings(); + this.serverSettings = SettingsFrame.defaultRFCSettings(); this.hpackOut = new Encoder(serverSettings.getParameter(HEADER_TABLE_SIZE)); this.hpackIn = new Decoder(clientSettings.getParameter(HEADER_TABLE_SIZE)); if (debugHpack.on()) { @@ -430,12 +430,12 @@ assert numReservedClientStreams >= 0; assert numReservedServerStreams >= 0; - if (clientInitiated && numReservedClientStreams >= getMaxConcurrentClientStreams()) { + if (clientInitiated &&numReservedClientStreams >= maxConcurrentClientInitiatedStreams()) { throw new IOException("too many concurrent streams"); } else if (clientInitiated) { numReservedClientStreams++; } - if (!clientInitiated && numReservedServerStreams >= getMaxConcurrentServerStreams()) { + if (!clientInitiated && numReservedServerStreams >= maxConcurrentServerInitiatedStreams()) { return false; } else if (!clientInitiated) { numReservedServerStreams++; @@ -580,11 +580,11 @@ return serverSettings.getParameter(INITIAL_WINDOW_SIZE); } - final int getMaxConcurrentClientStreams() { + final int maxConcurrentClientInitiatedStreams() { return serverSettings.getParameter(MAX_CONCURRENT_STREAMS); } - final int getMaxConcurrentServerStreams() { + final int maxConcurrentServerInitiatedStreams() { return clientSettings.getParameter(MAX_CONCURRENT_STREAMS); }
--- a/src/java.net.http/share/classes/jdk/internal/net/http/frame/SettingsFrame.java Tue Jul 24 13:55:57 2018 +0800 +++ b/src/java.net.http/share/classes/jdk/internal/net/http/frame/SettingsFrame.java Mon Jul 23 11:47:03 2018 +0100 @@ -161,15 +161,20 @@ } } - public static final int DEFAULT_INITIAL_WINDOW_SIZE = 64 * K -1; + // The initial value is 4,096 octets. public static final int DEFAULT_HEADER_TABLE_SIZE = 4 * K; - public static final int DEFAULT_MAX_CONCURRENT_STREAMS = 100; + // The initial value is 1, which indicates that server push is permitted. + public static final int DEFAULT_ENABLE_PUSH = 1; + // Initially, there is no limit to this value. This limit is directional. + public static final int DEFAULT_MAX_CONCURRENT_STREAMS = Integer.MAX_VALUE; + // The initial value is 2^16-1 (65,535) octets. + public static final int DEFAULT_INITIAL_WINDOW_SIZE = 64 * K -1; + // The initial value is 2^14 (16,384) octets. public static final int DEFAULT_MAX_FRAME_SIZE = 16 * K; - public static SettingsFrame getDefaultSettings() { + public static SettingsFrame defaultRFCSettings() { SettingsFrame f = new SettingsFrame(); - // TODO: check these values - f.setParameter(ENABLE_PUSH, 1); + f.setParameter(ENABLE_PUSH, DEFAULT_ENABLE_PUSH); f.setParameter(HEADER_TABLE_SIZE, DEFAULT_HEADER_TABLE_SIZE); f.setParameter(MAX_CONCURRENT_STREAMS, DEFAULT_MAX_CONCURRENT_STREAMS); f.setParameter(INITIAL_WINDOW_SIZE, DEFAULT_INITIAL_WINDOW_SIZE);
--- a/test/jdk/java/net/httpclient/http2/server/Http2TestServerConnection.java Tue Jul 24 13:55:57 2018 +0800 +++ b/test/jdk/java/net/httpclient/http2/server/Http2TestServerConnection.java Mon Jul 23 11:47:03 2018 +0100 @@ -156,7 +156,7 @@ }; private SettingsFrame getServerSettingProperties() { - SettingsFrame s = SettingsFrame.getDefaultSettings(); + SettingsFrame s = SettingsFrame.defaultRFCSettings(); if (properties == null) return s; for (int i=0; i<propIDs.length; i++) {