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.DecoratingHttp2ConnectionEncoder
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.
-
-
Field Summary
Fields Modifier and Type Field Description private io.netty.handler.codec.http2.Http2LifecycleManager
lifecycleManager
private boolean
limitReached
private static io.netty.util.internal.logging.InternalLogger
logger
private int
maxOutstandingControlFrames
private int
outstandingControlFrames
private io.netty.channel.ChannelFutureListener
outstandingControlFramesListener
-
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.ChannelPromise
handleOutstandingControlFrames(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise)
void
lifecycleManager(io.netty.handler.codec.http2.Http2LifecycleManager lifecycleManager)
io.netty.channel.ChannelFuture
writePing(io.netty.channel.ChannelHandlerContext ctx, boolean ack, long data, io.netty.channel.ChannelPromise promise)
io.netty.channel.ChannelFuture
writeRstStream(io.netty.channel.ChannelHandlerContext ctx, int streamId, long errorCode, io.netty.channel.ChannelPromise promise)
io.netty.channel.ChannelFuture
writeSettingsAck(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:
lifecycleManager
in interfaceio.netty.handler.codec.http2.Http2ConnectionEncoder
- Overrides:
lifecycleManager
in 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:
writeSettingsAck
in interfaceio.netty.handler.codec.http2.Http2FrameWriter
- Overrides:
writeSettingsAck
in 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:
writePing
in interfaceio.netty.handler.codec.http2.Http2FrameWriter
- Overrides:
writePing
in 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:
writeRstStream
in interfaceio.netty.handler.codec.http2.Http2FrameWriter
- Overrides:
writeRstStream
in classio.netty.handler.codec.http2.DecoratingHttp2FrameWriter
-
handleOutstandingControlFrames
private io.netty.channel.ChannelPromise handleOutstandingControlFrames(io.netty.channel.ChannelHandlerContext ctx, io.netty.channel.ChannelPromise promise)
-
-