netty5/codec-http2/src/main/java/io/netty/handler/codec/http2
Scott Mitchell 3482651e0c HTTP/2 Non Active Stream RFC Corrections
Motivation:
codec-http2 couples the dependency tree state with the remainder of the stream state (Http2Stream). This makes implementing constraints where stream state and dependency tree state diverge in the RFC challenging. For example the RFC recommends retaining dependency tree state after a stream transitions to closed [1]. Dependency tree state can be exchanged on streams in IDLE. In practice clients may use stream IDs for the purpose of establishing QoS classes and therefore retaining this dependency tree state can be important to client perceived performance. It is difficult to limit the total amount of state we retain when stream state and dependency tree state is combined.

Modifications:
- Remove dependency tree, priority, and weight related items from public facing Http2Connection and Http2Stream APIs. This information is optional to track and depends on the flow controller implementation.
- Move all dependency tree, priority, and weight related code from DefaultHttp2Connection to WeightedFairQueueByteDistributor. This is currently the only place which cares about priority. We can pull out the dependency tree related code in the future if it is generally useful to expose for other implementations.
- DefaultHttp2Connection should explicitly limit the number of reserved streams now that IDLE streams are no longer created.

Result:
More compliant with the HTTP/2 RFC.
Fixes https://github.com/netty/netty/issues/6206.

[1] https://tools.ietf.org/html/rfc7540#section-5.3.4
2017-02-01 10:34:27 -08:00
..
internal/hpack Move location of where oversized headers that don't exceed the go away limit is done 2017-01-24 15:19:46 -08:00
AbstractHttp2ConnectionHandlerBuilder.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
AbstractHttp2StreamChannel.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
AbstractHttp2StreamFrame.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
AbstractHttp2StreamStateEvent.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
AbstractInboundHttp2ToHttpAdapterBuilder.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
CharSequenceMap.java Optimize HPACK usage to align more with Netty types and remove heavy object creations. Related to [#3597] 2016-06-22 14:26:05 +02:00
CompressorHttp2ConnectionEncoder.java Ensure the same ByteBufAllocator is used in the EmbeddedChannel when compress / decompress. Related to [#5294] 2016-05-31 09:08:33 +02:00
DecoratingHttp2ConnectionDecoder.java Http2ConnectionDecoder remove localSettings setter method 2016-08-10 12:23:03 -07:00
DecoratingHttp2ConnectionEncoder.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
DecoratingHttp2FrameWriter.java HTTP/2 revert Http2FrameWriter throws API change 2017-01-26 23:26:17 -08:00
DefaultHttp2Connection.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
DefaultHttp2ConnectionDecoder.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
DefaultHttp2ConnectionEncoder.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
DefaultHttp2DataFrame.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
DefaultHttp2FrameReader.java Fixed rfc violation about sending extension frame in the middle of headers 2017-01-26 11:25:15 -08:00
DefaultHttp2FrameWriter.java HTTP/2 revert Http2FrameWriter throws API change 2017-01-26 23:26:17 -08:00
DefaultHttp2GoAwayFrame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
DefaultHttp2Headers.java Read Only Http2Headers 2016-12-18 09:32:24 -08:00
DefaultHttp2HeadersDecoder.java HTTP/2 Max Header List Size Bug 2017-01-19 10:42:43 -08:00
DefaultHttp2HeadersEncoder.java HTTP/2 Max Header List Size Bug 2017-01-19 10:42:43 -08:00
DefaultHttp2HeadersFrame.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
DefaultHttp2LocalFlowController.java DefaultHttp2Connection.close Reentrant Modification 2016-05-09 14:16:30 -07:00
DefaultHttp2RemoteFlowController.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
DefaultHttp2ResetFrame.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
DefaultHttp2WindowUpdateFrame.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
DelegatingDecompressorFrameListener.java HTTP/2 DelegatingDecompressorFrameListener return bytes to flow control 2016-06-20 14:24:09 -07:00
EmptyHttp2Headers.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2ClientUpgradeCodec.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2Codec.java Allow non-default Http/2 server initial settings 2016-11-09 08:31:26 +01:00
Http2CodecUtil.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
Http2Connection.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
Http2ConnectionAdapter.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
Http2ConnectionDecoder.java Http2ConnectionDecoder remove localSettings setter method 2016-08-10 12:23:03 -07:00
Http2ConnectionEncoder.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2ConnectionHandler.java HTTP/2 Connection Preface User Event 2017-02-01 10:10:42 -08:00
Http2ConnectionHandlerBuilder.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2ConnectionPrefaceWrittenEvent.java HTTP/2 Connection Preface User Event 2017-02-01 10:10:42 -08:00
Http2DataFrame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
Http2DataWriter.java http2: count pad length field toward flow control. Fixes #5434 2016-06-25 09:51:36 -07:00
Http2Error.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2EventAdapter.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
Http2Exception.java Server returns status 431 on header size errors 2016-12-15 18:06:24 -08:00
Http2Flags.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2FlowController.java HTTP/2 Ensure default settings are correctly enforced and interfaces clarified 2016-10-07 13:00:45 -07:00
Http2Frame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
Http2FrameAdapter.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2FrameCodec.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
Http2FrameListener.java http2: count pad length field toward flow control. Fixes #5434 2016-06-25 09:51:36 -07:00
Http2FrameListenerDecorator.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2FrameLogger.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2FrameReader.java HTTP/2 Max Header List Size Bug 2017-01-19 10:42:43 -08:00
Http2FrameSizePolicy.java HTTP/2 Ensure default settings are correctly enforced and interfaces clarified 2016-10-07 13:00:45 -07:00
Http2FrameTypes.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2FrameWriter.java HTTP/2 revert Http2FrameWriter throws API change 2017-01-26 23:26:17 -08:00
Http2GoAwayFrame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
Http2Headers.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2HeadersDecoder.java HTTP/2 Max Header List Size Bug 2017-01-19 10:42:43 -08:00
Http2HeadersEncoder.java HTTP/2 Max Header List Size Bug 2017-01-19 10:42:43 -08:00
Http2HeadersFrame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
Http2InboundFrameLogger.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2LifecycleManager.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2LocalFlowController.java http2: count pad length field toward flow control. Fixes #5434 2016-06-25 09:51:36 -07:00
Http2MultiplexCodec.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
Http2NoMoreStreamIdsException.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2OutboundFrameLogger.java HTTP/2 revert Http2FrameWriter throws API change 2017-01-26 23:26:17 -08:00
Http2PromisedRequestVerifier.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2RemoteFlowController.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
Http2ResetFrame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
Http2SecurityUtil.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2ServerDowngrader.java codec-http2: Mark requests as chunked in Http2ServerDowngrader 2016-09-15 15:58:40 -07:00
Http2ServerUpgradeCodec.java Clean-up unused imports 2016-09-30 09:08:50 +02:00
Http2Settings.java HTTP/2 Ensure default settings are correctly enforced and interfaces clarified 2016-10-07 13:00:45 -07:00
Http2Stream.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
Http2StreamActiveEvent.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
Http2StreamChannelBootstrap.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
Http2StreamClosedEvent.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
Http2StreamFrame.java h2childchan: Ability to open outbound/local streams. Fixes #4913 2016-10-06 16:12:19 -07:00
Http2StreamStateEvent.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
Http2StreamVisitor.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2WindowUpdateFrame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
HttpConversionUtil.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
HttpToHttp2ConnectionHandler.java HTTP/2 revert Http2FrameWriter throws API change 2017-01-26 23:26:17 -08:00
HttpToHttp2ConnectionHandlerBuilder.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
InboundHttp2ToHttpAdapter.java Correctly add STREAM_WEIGHT header in InboundHttp2ToHttpAdapter.onPushPromiseRead(...) 2016-10-10 10:38:35 +02:00
InboundHttp2ToHttpAdapterBuilder.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
InboundHttpToHttp2Adapter.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
package-info.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
ReadOnlyHttp2Headers.java Read Only Http2Headers 2016-12-18 09:32:24 -08:00
StreamBufferingEncoder.java HTTP/2 revert Http2FrameWriter throws API change 2017-01-26 23:26:17 -08:00
StreamByteDistributor.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
UniformStreamByteDistributor.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00
WeightedFairQueueByteDistributor.java HTTP/2 Non Active Stream RFC Corrections 2017-02-01 10:34:27 -08:00