Package io.netty.handler.codec.http2
Class Http2MaxRstFrameLimitEncoder
- java.lang.Object
-
- io.netty.handler.codec.http2.DecoratingHttp2FrameWriter
-
- io.netty.handler.codec.http2.DecoratingHttp2ConnectionEncoder
-
- io.netty.handler.codec.http2.Http2MaxRstFrameLimitEncoder
-
- All Implemented Interfaces:
Http2ConnectionEncoder,Http2DataWriter,Http2FrameWriter,Http2SettingsReceivedConsumer,java.io.Closeable,java.lang.AutoCloseable
final class Http2MaxRstFrameLimitEncoder extends DecoratingHttp2ConnectionEncoder
DecoratingHttp2ConnectionEncoderwhich guards against a remote peer that will trigger a massive amount of RST frames on an existing connection. 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
Fields Modifier and Type Field Description private longlastRstFrameNanoprivate Http2LifecycleManagerlifecycleManagerprivate static InternalLoggerloggerprivate intmaxRstFramesPerWindowprivate longnanosPerWindowprivate intsendRstInWindow
-
Constructor Summary
Constructors Constructor Description Http2MaxRstFrameLimitEncoder(Http2ConnectionEncoder delegate, int maxRstFramesPerWindow, int secondsPerWindow)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleancountRstFrameErrorCode(long errorCode)voidlifecycleManager(Http2LifecycleManager lifecycleManager)Sets the lifecycle manager.ChannelFuturewriteRstStream(ChannelHandlerContext ctx, int streamId, long errorCode, ChannelPromise promise)Writes a RST_STREAM frame to the remote endpoint.-
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, writePing, writePriority, writePushPromise, writeSettings, writeSettingsAck, writeWindowUpdate
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.netty.handler.codec.http2.Http2ConnectionEncoder
writeFrame
-
Methods inherited from interface io.netty.handler.codec.http2.Http2DataWriter
writeData
-
Methods inherited from interface io.netty.handler.codec.http2.Http2FrameWriter
close, configuration, writeGoAway, writeHeaders, writeHeaders, writePing, writePriority, writePushPromise, writeSettings, writeSettingsAck, writeWindowUpdate
-
-
-
-
Field Detail
-
logger
private static final InternalLogger logger
-
nanosPerWindow
private final long nanosPerWindow
-
maxRstFramesPerWindow
private final int maxRstFramesPerWindow
-
lastRstFrameNano
private long lastRstFrameNano
-
sendRstInWindow
private int sendRstInWindow
-
lifecycleManager
private Http2LifecycleManager lifecycleManager
-
-
Constructor Detail
-
Http2MaxRstFrameLimitEncoder
Http2MaxRstFrameLimitEncoder(Http2ConnectionEncoder delegate, int maxRstFramesPerWindow, int secondsPerWindow)
-
-
Method Detail
-
lifecycleManager
public void lifecycleManager(Http2LifecycleManager 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
-
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.
-
countRstFrameErrorCode
private boolean countRstFrameErrorCode(long errorCode)
-
-