Package io.netty.handler.codec.http2
Class Http2ControlFrameLimitEncoder
java.lang.Object
io.netty.handler.codec.http2.DecoratingHttp2FrameWriter
io.netty.handler.codec.http2.DecoratingHttp2ConnectionEncoder
io.netty.handler.codec.http2.Http2ControlFrameLimitEncoder
- All Implemented Interfaces:
Http2ConnectionEncoder,Http2DataWriter,Http2FrameWriter,Http2SettingsReceivedConsumer,Closeable,AutoCloseable
DecoratingHttp2ConnectionEncoder which guards against a remote peer that will trigger a massive amount
of control frames but will not consume our responses to these.
This encoder will tear-down the connection once we reached the configured limit to reduce the risk of DDOS.-
Nested Class Summary
Nested classes/interfaces inherited from interface io.netty.handler.codec.http2.Http2FrameWriter
Http2FrameWriter.Configuration -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Http2LifecycleManagerprivate booleanprivate static final InternalLoggerprivate final intprivate intprivate final ChannelFutureListener -
Constructor Summary
ConstructorsConstructorDescriptionHttp2ControlFrameLimitEncoder(Http2ConnectionEncoder delegate, int maxOutstandingControlFrames) -
Method Summary
Modifier and TypeMethodDescriptionprivate ChannelPromisevoidlifecycleManager(Http2LifecycleManager lifecycleManager) Sets the lifecycle manager.writePing(ChannelHandlerContext ctx, boolean ack, long data, ChannelPromise promise) Writes a PING frame to the remote endpoint.writeRstStream(ChannelHandlerContext ctx, int streamId, long errorCode, ChannelPromise promise) Writes a RST_STREAM frame to the remote endpoint.writeSettingsAck(ChannelHandlerContext ctx, ChannelPromise promise) Writes a SETTINGS acknowledgment to the remote endpoint.Methods inherited from class io.netty.handler.codec.http2.DecoratingHttp2ConnectionEncoder
connection, consumeReceivedSettings, flowController, frameWriter, pollSentSettings, remoteSettingsMethods inherited from class io.netty.handler.codec.http2.DecoratingHttp2FrameWriter
close, configuration, writeData, writeFrame, writeGoAway, writeHeaders, writeHeaders, writePriority, writePushPromise, writeSettings, writeWindowUpdateMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.netty.handler.codec.http2.Http2ConnectionEncoder
writeFrameMethods inherited from interface io.netty.handler.codec.http2.Http2DataWriter
writeDataMethods inherited from interface io.netty.handler.codec.http2.Http2FrameWriter
close, configuration, writeGoAway, writeHeaders, writeHeaders, writePriority, writePushPromise, writeSettings, writeWindowUpdate
-
Field Details
-
logger
-
maxOutstandingControlFrames
private final int maxOutstandingControlFrames -
outstandingControlFramesListener
-
lifecycleManager
-
outstandingControlFrames
private int outstandingControlFrames -
limitReached
private boolean limitReached
-
-
Constructor Details
-
Http2ControlFrameLimitEncoder
Http2ControlFrameLimitEncoder(Http2ConnectionEncoder delegate, int maxOutstandingControlFrames)
-
-
Method Details
-
lifecycleManager
Description copied from interface:Http2ConnectionEncoderSets the lifecycle manager. Must be called as part of initialization before the encoder is used.- Specified by:
lifecycleManagerin interfaceHttp2ConnectionEncoder- Overrides:
lifecycleManagerin classDecoratingHttp2ConnectionEncoder
-
writeSettingsAck
Description copied from interface:Http2FrameWriterWrites a SETTINGS acknowledgment to the remote endpoint.- Specified by:
writeSettingsAckin interfaceHttp2FrameWriter- Overrides:
writeSettingsAckin classDecoratingHttp2FrameWriter- Parameters:
ctx- the context to use for writing.promise- the promise for the write.- Returns:
- the future for the write.
-
writePing
public ChannelFuture writePing(ChannelHandlerContext ctx, boolean ack, long data, ChannelPromise promise) Description copied from interface:Http2FrameWriterWrites a PING frame to the remote endpoint.- Specified by:
writePingin interfaceHttp2FrameWriter- Overrides:
writePingin classDecoratingHttp2FrameWriter- Parameters:
ctx- the context to use for writing.ack- indicates whether this is an ack of a PING frame previously received from the remote endpoint.data- the payload of the frame.promise- the promise for the write.- Returns:
- the future for the write.
-
writeRstStream
public ChannelFuture writeRstStream(ChannelHandlerContext ctx, int streamId, long errorCode, ChannelPromise promise) Description copied from interface:Http2FrameWriterWrites a RST_STREAM frame to the remote endpoint.- Specified by:
writeRstStreamin interfaceHttp2FrameWriter- Overrides:
writeRstStreamin classDecoratingHttp2FrameWriter- Parameters:
ctx- the context to use for writing.streamId- the stream for which to send the frame.errorCode- the error code indicating the nature of the failure.promise- the promise for the write.- Returns:
- the future for the write.
-
handleOutstandingControlFrames
private ChannelPromise handleOutstandingControlFrames(ChannelHandlerContext ctx, ChannelPromise promise)
-