Allow to write Http2UnkownFrame when using Http2FrameCodec / Http2MultiplexCodec (#7867)

Motivation:

We should allow to write Http2UnkownFrame to allow custom extensions.

Modifications:

Allow to write Http2UnkownFrame
Add unit test

Result:

Fixes https://github.com/netty/netty/issues/7860.
This commit is contained in:
Norman Maurer 2018-04-13 07:50:44 +02:00 committed by GitHub
parent 3f244a94fe
commit da2e91b33a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 0 deletions

View File

@ -296,6 +296,10 @@ public class Http2FrameCodec extends Http2ConnectionHandler {
encoder().writeSettings(ctx, ((Http2SettingsFrame) msg).settings(), promise);
} else if (msg instanceof Http2GoAwayFrame) {
writeGoAwayFrame(ctx, (Http2GoAwayFrame) msg, promise);
} else if (msg instanceof Http2UnknownFrame) {
Http2UnknownFrame unknownFrame = (Http2UnknownFrame) msg;
encoder().writeFrame(ctx, unknownFrame.frameType(), unknownFrame.stream().id(),
unknownFrame.flags(), unknownFrame.content(), promise);
} else if (!(msg instanceof Http2Frame)) {
ctx.write(msg, promise);
} else {

View File

@ -534,6 +534,20 @@ public class Http2FrameCodecTest {
assertEquals(Integer.MAX_VALUE, localFlow.windowSize(connection.connectionStream()));
}
@Test
public void writeUnknownFrame() {
final Http2FrameStream stream = frameCodec.newStream();
ByteBuf buffer = Unpooled.buffer().writeByte(1);
DefaultHttp2UnknownFrame unknownFrame = new DefaultHttp2UnknownFrame(
(byte) 20, new Http2Flags().ack(true), buffer);
unknownFrame.stream(stream);
channel.write(unknownFrame);
verify(frameWriter).writeFrame(eq(http2HandlerCtx), eq(unknownFrame.frameType()),
eq(unknownFrame.stream().id()), eq(unknownFrame.flags()), eq(buffer), any(ChannelPromise.class));
}
@Test
public void sendSettingsFrame() {
Http2Settings settings = new Http2Settings();