mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-22 03:54:33 +02:00
8207959: The initial value of SETTINGS_MAX_CONCURRENT_STREAMS should have no limit
Reviewed-by: michaelm
This commit is contained in:
parent
23084b76fa
commit
e605cae39f
3 changed files with 16 additions and 11 deletions
|
@ -297,7 +297,7 @@ class Http2Connection {
|
|||
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 @@ class Http2Connection {
|
|||
|
||||
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 @@ class Http2Connection {
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -161,15 +161,20 @@ public class SettingsFrame extends Http2Frame {
|
|||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue