Package io.grpc.netty
Class Http2ControlFrameLimitEncoder
- java.lang.Object
-
- io.netty.handler.codec.http2.DecoratingHttp2FrameWriter
-
- io.netty.handler.codec.http2.DecoratingHttp2ConnectionEncoder
-
- io.grpc.netty.Http2ControlFrameLimitEncoder
-
- All Implemented Interfaces:
io.netty.handler.codec.http2.Http2ConnectionEncoder,io.netty.handler.codec.http2.Http2DataWriter,io.netty.handler.codec.http2.Http2FrameWriter,io.netty.handler.codec.http2.Http2SettingsReceivedConsumer,java.io.Closeable,java.lang.AutoCloseable
final class Http2ControlFrameLimitEncoder extends io.netty.handler.codec.http2.DecoratingHttp2ConnectionEncoderDecoratingHttp2ConnectionEncoderwhich 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.
-
-
Field Summary
Fields Modifier and Type Field Description private io.netty.handler.codec.http2.Http2LifecycleManagerlifecycleManagerprivate booleanlimitReachedprivate static io.netty.util.internal.logging.InternalLoggerloggerprivate intmaxOutstandingControlFramesprivate intoutstandingControlFramesprivate io.netty.channel.ChannelFutureListeneroutstandingControlFramesListener
-
Constructor Summary
Constructors Constructor Description Http2ControlFrameLimitEncoder(io.netty.handler.codec.http2.Http2ConnectionEncoder delegate, int maxOutstandingControlFrames)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private io.netty.channel.ChannelPromisehandleOutstandingControlFrames(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise)voidlifecycleManager(io.netty.handler.codec.http2.Http2LifecycleManager lifecycleManager)io.netty.channel.ChannelFuturewritePing(io.netty.channel.ChannelHandlerContext ctx, boolean ack, long data, io.netty.channel.ChannelPromise promise)io.netty.channel.ChannelFuturewriteRstStream(io.netty.channel.ChannelHandlerContext ctx, int streamId, long errorCode, io.netty.channel.ChannelPromise promise)io.netty.channel.ChannelFuturewriteSettingsAck(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise)-
Methods inherited from class io.netty.handler.codec.http2.DecoratingHttp2ConnectionEncoder
connection, consumeReceivedSettings, flowController, frameWriter, pollSentSettings, remoteSettings
-
Methods inherited from class io.netty.handler.codec.http2.DecoratingHttp2FrameWriter
close, configuration, writeData, writeFrame, writeGoAway, writeHeaders, writeHeaders, writePriority, writePushPromise, writeSettings, writeWindowUpdate
-
-
-
-
Field Detail
-
logger
private static final io.netty.util.internal.logging.InternalLogger logger
-
maxOutstandingControlFrames
private final int maxOutstandingControlFrames
-
outstandingControlFramesListener
private final io.netty.channel.ChannelFutureListener outstandingControlFramesListener
-
lifecycleManager
private io.netty.handler.codec.http2.Http2LifecycleManager lifecycleManager
-
outstandingControlFrames
private int outstandingControlFrames
-
limitReached
private boolean limitReached
-
-
Method Detail
-
lifecycleManager
public void lifecycleManager(io.netty.handler.codec.http2.Http2LifecycleManager lifecycleManager)
- Specified by:
lifecycleManagerin interfaceio.netty.handler.codec.http2.Http2ConnectionEncoder- Overrides:
lifecycleManagerin classio.netty.handler.codec.http2.DecoratingHttp2ConnectionEncoder
-
writeSettingsAck
public io.netty.channel.ChannelFuture writeSettingsAck(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise)- Specified by:
writeSettingsAckin interfaceio.netty.handler.codec.http2.Http2FrameWriter- Overrides:
writeSettingsAckin classio.netty.handler.codec.http2.DecoratingHttp2FrameWriter
-
writePing
public io.netty.channel.ChannelFuture writePing(io.netty.channel.ChannelHandlerContext ctx, boolean ack, long data, io.netty.channel.ChannelPromise promise)- Specified by:
writePingin interfaceio.netty.handler.codec.http2.Http2FrameWriter- Overrides:
writePingin classio.netty.handler.codec.http2.DecoratingHttp2FrameWriter
-
writeRstStream
public io.netty.channel.ChannelFuture writeRstStream(io.netty.channel.ChannelHandlerContext ctx, int streamId, long errorCode, io.netty.channel.ChannelPromise promise)- Specified by:
writeRstStreamin interfaceio.netty.handler.codec.http2.Http2FrameWriter- Overrides:
writeRstStreamin classio.netty.handler.codec.http2.DecoratingHttp2FrameWriter
-
handleOutstandingControlFrames
private io.netty.channel.ChannelPromise handleOutstandingControlFrames(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise)
-
-