diff --git a/netty/src/main/java/io/grpc/netty/NettyServerHandler.java b/netty/src/main/java/io/grpc/netty/NettyServerHandler.java index 79715ca2996..58166f50f7e 100644 --- a/netty/src/main/java/io/grpc/netty/NettyServerHandler.java +++ b/netty/src/main/java/io/grpc/netty/NettyServerHandler.java @@ -252,6 +252,7 @@ static NettyServerHandler newHandler( maxMessageSize); final Http2Connection connection = new DefaultHttp2Connection(true); + connection.remote().maxActiveStreams(maxStreams); UniformStreamByteDistributor dist = new UniformStreamByteDistributor(connection); dist.minAllocationChunk(MIN_ALLOCATED_CHUNK); // Increased for benchmarks performance. DefaultHttp2RemoteFlowController controller = diff --git a/netty/src/test/java/io/grpc/netty/NettyServerHandlerTest.java b/netty/src/test/java/io/grpc/netty/NettyServerHandlerTest.java index 1c8d2b5479d..84a1a48b37f 100644 --- a/netty/src/test/java/io/grpc/netty/NettyServerHandlerTest.java +++ b/netty/src/test/java/io/grpc/netty/NettyServerHandlerTest.java @@ -454,6 +454,14 @@ public void shouldAdvertiseMaxConcurrentStreams() throws Exception { assertEquals(maxConcurrentStreams, captor.getValue().maxConcurrentStreams().longValue()); } + @Test + public void connectionRemoteMaxActiveStreamsShouldBeEnforcedLocallyOnStartup() throws Exception { + maxConcurrentStreams = 314; + manualSetUp(); + + assertEquals(maxConcurrentStreams, connection().remote().maxActiveStreams()); + } + @Test public void shouldAdvertiseMaxHeaderListSize() throws Exception { maxHeaderListSize = 123;