http-client-branch: fix for 8207959 The initial value of SETTINGS_MAX_CONCURRENT_STREAMS should have no limit http-client-branch
authorchegar
Mon, 23 Jul 2018 11:47:03 +0100
branchhttp-client-branch
changeset 56839 8ca7b2673b12
parent 56834 577317b61442
child 56840 94b0c37babde
http-client-branch: fix for 8207959 The initial value of SETTINGS_MAX_CONCURRENT_STREAMS should have no limit
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
--- a/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java	Mon Jul 16 13:26:39 2018 +0100
+++ 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	Mon Jul 16 13:26:39 2018 +0100
+++ 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	Mon Jul 16 13:26:39 2018 +0100
+++ 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++) {