netty5/codec-http2/src/main/java/io/netty/handler/codec/http2
Norman Maurer d6c05e9b31 HTTP/2: Ensure newStream() is called only once per connection upgrade and the correct handler is used (#9396)
Motivation:

306299323c introduced some code change to move the responsibility of creating the stream for the upgrade to Http2FrameCodec. Unfortunaly this lead to the situation of having newStream().setStreamAndProperty(...) be called twice. Because of this we only ever saw the channelActive(...) on Http2StreamChannel but no other events as the mapping was replaced on the second newStream().setStreamAndProperty(...) call.

Beside this we also did not use the correct handler for the upgrade stream in some cases

Modifications:

- Just remove the Http2FrameCodec.onHttpClientUpgrade() method and so let the base class handle all of it. The stream is created correctly as part of the ConnectionListener implementation of Http2FrameCodec already.
- Consolidate logic of creating stream channels
- Adjust unit test to capture the bug

Result:

Fixes https://github.com/netty/netty/issues/9395
2019-07-23 21:13:33 +02:00
..
AbstractHttp2ConnectionHandlerBuilder.java Allow to disable automatically sending PING acks. (#9338) 2019-07-12 18:15:26 +02:00
AbstractHttp2StreamChannel.java HTTP/2 multiplex: Correctly process buffered inbound data even if autoRead is false (#9389) 2019-07-21 20:58:50 +02:00
AbstractHttp2StreamFrame.java Finish work on http2 child channel implementation and http2 frame api. 2017-08-11 12:41:28 +02:00
AbstractInboundHttp2ToHttpAdapterBuilder.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
CharSequenceMap.java migrate java8 (#8779) 2019-01-28 05:55:30 +01:00
CleartextHttp2ServerUpgradeHandler.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
CompressorHttp2ConnectionEncoder.java Tighten up contract of PromiseCombiner and so make it more safe to use (#8886) 2019-02-28 20:39:37 +01:00
DecoratingHttp2ConnectionDecoder.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
DecoratingHttp2ConnectionEncoder.java DecoratingHttp2ConnectionEncoder.consumeRemoteSettings must not throw if delegate is instance of Http2SettingsReceivedConsumer (#9343) 2019-07-09 14:41:29 +02:00
DecoratingHttp2FrameWriter.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
DefaultHttp2Connection.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
DefaultHttp2ConnectionDecoder.java Allow to disable automatically sending PING acks. (#9338) 2019-07-12 18:15:26 +02:00
DefaultHttp2ConnectionEncoder.java DefaultHttp2ConnectionEncoder async SETTINGS ACK SimpleChannelPromiseAggregator promise usage 2019-04-28 11:48:24 +02:00
DefaultHttp2DataFrame.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
DefaultHttp2FrameReader.java Reduce http2 buffer slicing (#8598) 2018-11-29 19:46:19 +01:00
DefaultHttp2FrameWriter.java Upgrade to new netty-build and com.puppycrawl.tools 8.18 (#8980) 2019-03-26 14:22:06 +01:00
DefaultHttp2GoAwayFrame.java use checkPositive/checkPositiveOrZero (#8835) 2019-02-04 15:55:07 +01:00
DefaultHttp2Headers.java migrate java8: use lambda and method reference (#8781) 2019-01-29 14:06:05 +01:00
DefaultHttp2HeadersDecoder.java Use Table lookup for HPACK decoder (#9307) 2019-07-02 20:13:19 +02:00
DefaultHttp2HeadersEncoder.java Disable Huffman encoding for small headers (#9260) 2019-07-01 21:10:33 +02:00
DefaultHttp2HeadersFrame.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
DefaultHttp2LocalFlowController.java use checkPositive/checkPositiveOrZero (#8835) 2019-02-04 15:55:07 +01:00
DefaultHttp2PingFrame.java Allow to disable automatically sending PING acks. (#9338) 2019-07-12 18:15:26 +02:00
DefaultHttp2RemoteFlowController.java use checkPositive/checkPositiveOrZero (#8835) 2019-02-04 15:55:07 +01:00
DefaultHttp2ResetFrame.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
DefaultHttp2SettingsAckFrame.java HTTP/2 to support asynchronous SETTINGS ACK (#9069) 2019-04-28 11:47:50 +02:00
DefaultHttp2SettingsFrame.java HTTP/2 to support asynchronous SETTINGS ACK (#9069) 2019-04-28 11:47:50 +02:00
DefaultHttp2UnknownFrame.java Finish work on http2 child channel implementation and http2 frame api. 2017-08-11 12:41:28 +02:00
DefaultHttp2WindowUpdateFrame.java Finish work on http2 child channel implementation and http2 frame api. 2017-08-11 12:41:28 +02:00
DelegatingDecompressorFrameListener.java use checkPositive/checkPositiveOrZero (#8835) 2019-02-04 15:55:07 +01:00
EmptyHttp2Headers.java Method to check if a Http2 header is present and has a given value 2018-01-26 08:33:49 -08:00
HpackDecoder.java Use ByteProcessor in HpackHuffmanDecoder to reduce bound-checks and r… (#9317) 2019-07-04 08:46:29 +02:00
HpackDynamicTable.java HTTP/2 move internal HPACK classes to the http2 package 2017-03-02 07:42:41 -08:00
HpackEncoder.java Disable Huffman encoding for small headers (#9260) 2019-07-01 21:10:33 +02:00
HpackHeaderField.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
HpackHuffmanDecoder.java Simplify HpackHuffmanDecoder table decode logic (#9335) 2019-07-08 12:05:28 +02:00
HpackHuffmanEncoder.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
HpackStaticTable.java migrate java8 (#8779) 2019-01-28 05:55:30 +01:00
HpackUtil.java HTTP/2 move internal HPACK classes to the http2 package 2017-03-02 07:42:41 -08:00
Http2ChannelDuplexHandler.java Reduce coupeling between Http2FrameCodec and Http2Multiplex* (#9273) 2019-06-27 21:51:51 +02:00
Http2ClientUpgradeCodec.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
Http2CodecUtil.java Use Table lookup for HPACK decoder (#9307) 2019-07-02 20:13:19 +02:00
Http2Connection.java HTTP/2 goaway connection state update sequencing (#8080) 2018-07-03 19:51:16 -07: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 HTTP2: Always apply the graceful shutdown timeout if configured (#9340) 2019-07-09 21:06:22 +02:00
Http2ConnectionHandlerBuilder.java Use Table lookup for HPACK decoder (#9307) 2019-07-02 20:13:19 +02:00
Http2ConnectionPrefaceAndSettingsFrameWrittenEvent.java Trigger user event when H2 conn preface & SETTINGS frame are sent 2017-10-24 09:17:06 +02:00
Http2DataFrame.java Fix minor spelling issues in javadocs (#8701) 2019-01-14 07:25:13 +01:00
Http2DataWriter.java http2: count pad length field toward flow control. Fixes #5434 2016-06-25 09:51:36 -07:00
Http2Error.java Cleanup : for loops for arrays to make code easier to read and removed unnecessary toLowerCase() 2017-02-06 07:47:59 +01:00
Http2EventAdapter.java Use long for http2 ping payload. 2018-02-08 10:23:34 +01:00
Http2Exception.java Only use static Exception instances when we can ensure addSuppressed … (#9152) 2019-05-17 22:42:53 +02: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 Use long for http2 ping payload. 2018-02-08 10:23:34 +01:00
Http2FrameCodec.java HTTP/2: Ensure newStream() is called only once per connection upgrade and the correct handler is used (#9396) 2019-07-23 21:13:33 +02:00
Http2FrameCodecBuilder.java Allow to disable automatically sending PING acks. (#9338) 2019-07-12 18:15:26 +02:00
Http2FrameListener.java Use long for http2 ping payload. 2018-02-08 10:23:34 +01:00
Http2FrameListenerDecorator.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
Http2FrameLogger.java Http2FrameLogger should not extend ChannelHandlerAdapter (#9002) 2019-04-02 20:51:11 +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
Http2FrameStream.java HTTP/2 Remove Http2FrameStream#CONNECTION_STREAM 2018-01-14 13:31:30 +01:00
Http2FrameStreamEvent.java Finish work on http2 child channel implementation and http2 frame api. 2017-08-11 12:41:28 +02:00
Http2FrameStreamException.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
Http2FrameStreamVisitor.java Finish work on http2 child channel implementation and http2 frame api. 2017-08-11 12:41:28 +02:00
Http2FrameTypes.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2FrameWriter.java Use long for http2 ping payload. 2018-02-08 10:23:34 +01:00
Http2GoAwayFrame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
Http2Headers.java Java 8 migration: Use diamond operator (#8749) 2019-01-22 16:07:26 +01:00
Http2HeadersDecoder.java HTTP/2 Max Header List Size Bug 2017-01-19 10:42:43 -08:00
Http2HeadersEncoder.java migrate java8: use lambda and method reference (#8781) 2019-01-29 14:06:05 +01:00
Http2HeadersFrame.java Finish work on http2 child channel implementation and http2 frame api. 2017-08-11 12:41:28 +02:00
Http2InboundFrameLogger.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
Http2LifecycleManager.java Do not fire outbound exception throught the pipeline when using Http2FrameCodec / Http2MultiplexCodec 2018-01-25 13:42:28 -08:00
Http2LocalFlowController.java http2: count pad length field toward flow control. Fixes #5434 2016-06-25 09:51:36 -07:00
Http2MultiplexCodec.java HTTP/2: Ensure newStream() is called only once per connection upgrade and the correct handler is used (#9396) 2019-07-23 21:13:33 +02:00
Http2MultiplexCodecBuilder.java Allow to disable automatically sending PING acks. (#9338) 2019-07-12 18:15:26 +02:00
Http2MultiplexHandler.java HTTP/2: Ensure newStream() is called only once per connection upgrade and the correct handler is used (#9396) 2019-07-23 21:13:33 +02:00
Http2NoMoreStreamIdsException.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2OutboundFrameLogger.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
Http2PingFrame.java Use long for http2 ping payload. 2018-02-08 10:23:34 +01:00
Http2PromisedRequestVerifier.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2RemoteFlowController.java Fix incorrect javadocs in Http2RemoteFlowController 2017-08-08 07:47:18 +02:00
Http2ResetFrame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
Http2SecurityUtil.java Java 8 migration: Use diamond operator (#8749) 2019-01-22 16:07:26 +01:00
Http2ServerUpgradeCodec.java Correctly handle http2 upgrades when Http2FrameCodec is used together… (#9318) 2019-07-04 08:33:09 +02:00
Http2Settings.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
Http2SettingsAckFrame.java HTTP/2 to support asynchronous SETTINGS ACK (#9069) 2019-04-28 11:47:50 +02:00
Http2SettingsFrame.java HTTP/2 Child Channel and FrameCodec Feature Parity. 2017-08-11 12:41:28 +02:00
Http2SettingsReceivedConsumer.java HTTP/2 to support asynchronous SETTINGS ACK (#9069) 2019-04-28 11:47:50 +02:00
Http2Stream.java Motivation: (#7848) 2018-04-21 08:23:15 +02:00
Http2StreamChannel.java Finish work on http2 child channel implementation and http2 frame api. 2017-08-11 12:41:28 +02:00
Http2StreamChannelBootstrap.java Cache the ChannelHandlerContext used in Http2StreamChannelBootstrap (#9382) 2019-07-18 10:29:14 +02:00
Http2StreamChannelId.java HTTP/2 Child Channel reading and flushing 2017-10-26 10:06:22 -07:00
Http2StreamFrame.java HTTP/2 Remove Http2FrameStream#CONNECTION_STREAM 2018-01-14 13:31:30 +01:00
Http2StreamFrameToHttpObjectCodec.java Make Http2StreamFrameToHttpObjectCodec truly @Sharable (#8482) 2018-11-09 18:23:53 +01:00
Http2StreamVisitor.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
Http2UnknownFrame.java Correctly let Http2UnkownFrame extend HttpStreamFrame and so be usable with Http2MultiplexCodec. (#7976) 2018-05-29 07:27:40 +02:00
Http2WindowUpdateFrame.java Split Http2MultiplexCodec into Frame- and MultiplexCodec + Tests. Fixes #4914 2016-06-29 07:22:09 +02:00
HttpConversionUtil.java codec-http2: Lazily translate cookies for HTTP/1 (#9251) 2019-06-19 11:04:38 +02:00
HttpToHttp2ConnectionHandler.java Http2ConnectionHandler to allow decoupling close(..) from GOAWAY graceful close (#9094) 2019-04-28 17:55:44 -07:00
HttpToHttp2ConnectionHandlerBuilder.java Use Table lookup for HPACK decoder (#9307) 2019-07-02 20:13:19 +02:00
InboundHttp2ToHttpAdapter.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
InboundHttp2ToHttpAdapterBuilder.java [#5088] Add annotation which marks packages/interfaces/classes as unstable 2016-05-09 15:16:35 +02:00
InboundHttpToHttp2Adapter.java Deprecate ChannelInboundHandlerAdapter and ChannelOutboundHandlerAdapter (#8929) 2019-03-13 09:46:10 +01:00
MaxCapacityQueue.java Reduce coupeling between Http2FrameCodec and Http2Multiplex* (#9273) 2019-06-27 21:51:51 +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 Java 8 migration: Use diamond operator (#8749) 2019-01-22 16:07:26 +01:00
StreamBufferingEncoder.java Java 8 migration: Use diamond operator (#8749) 2019-01-22 16:07:26 +01:00
StreamByteDistributor.java HTTP/2 support pending data larger than Integer.MAX_VALUE 2017-12-20 08:55:15 -08:00
UniformStreamByteDistributor.java use checkPositive/checkPositiveOrZero (#8835) 2019-02-04 15:55:07 +01:00
WeightedFairQueueByteDistributor.java use checkPositive/checkPositiveOrZero (#8835) 2019-02-04 15:55:07 +01:00