Package io.netty.handler.codec.http
Class HttpServerCodec
- java.lang.Object
-
- io.netty.channel.ChannelHandlerAdapter
-
- io.netty.channel.ChannelInboundHandlerAdapter
-
- io.netty.channel.ChannelDuplexHandler
-
- io.netty.channel.CombinedChannelDuplexHandler<HttpRequestDecoder,HttpResponseEncoder>
-
- io.netty.handler.codec.http.HttpServerCodec
-
- All Implemented Interfaces:
ChannelHandler,ChannelInboundHandler,ChannelOutboundHandler,HttpServerUpgradeHandler.SourceCodec
public final class HttpServerCodec extends CombinedChannelDuplexHandler<HttpRequestDecoder,HttpResponseEncoder> implements HttpServerUpgradeHandler.SourceCodec
A combination ofHttpRequestDecoderandHttpResponseEncoderwhich enables easier server side HTTP implementation.Header Validation
It is recommended to always enable header validation.Without header validation, your system can become vulnerable to CWE-113: Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting') .
This recommendation stands even when both peers in the HTTP exchange are trusted, as it helps with defence-in-depth.
- See Also:
HttpClientCodec
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classHttpServerCodec.HttpServerRequestDecoderprivate classHttpServerCodec.HttpServerResponseEncoder-
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static intDEFAULT_MAX_PIPELINE_DEPTHThe maximum number of pipelined requests we allow to be awaiting a response by default, before decoding of further requests is rejected.private intmaxPipelineDepthprivate booleanmustCloseAfterResponseWhen set, the connection will be closed after the next response is written.private java.util.Queue<HttpMethod>queueA queue that is used for correlating a request and a response.
-
Constructor Summary
Constructors Constructor Description HttpServerCodec()Creates a new instance with the default decoder options (maxInitialLineLength (4096),maxHeaderSize (8192), andmaxChunkSize (8192)).HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize)Creates a new instance with the specified decoder options.HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders)Deprecated.Prefer theHttpServerCodec(HttpDecoderConfig)constructor, to always enable header validation.HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize)Deprecated.Prefer theHttpServerCodec(HttpDecoderConfig)constructor, to always enable header validation.HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths)Deprecated.Prefer theHttpServerCodec(HttpDecoderConfig)constructor, to always enable header validation.HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths, boolean allowPartialChunks)Deprecated.Prefer theHttpServerCodec(HttpDecoderConfig)constructor, to always enable header validation.HttpServerCodec(HttpDecoderConfig config)Creates a new instance with the specified decoder configuration.HttpServerCodec(HttpDecoderConfig config, int maxPipelineDepth)Creates a new instance with the specified decoder configuration.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleanenqueueMethod(HttpMethod method)voidupgradeFrom(ChannelHandlerContext ctx)Upgrades to another protocol from HTTP.-
Methods inherited from class io.netty.channel.CombinedChannelDuplexHandler
bind, channelActive, channelInactive, channelRead, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, close, connect, deregister, disconnect, exceptionCaught, flush, handlerAdded, handlerRemoved, inboundHandler, init, outboundHandler, read, removeInboundHandler, removeOutboundHandler, userEventTriggered, write
-
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, isSharable
-
-
-
-
Field Detail
-
DEFAULT_MAX_PIPELINE_DEPTH
static final int DEFAULT_MAX_PIPELINE_DEPTH
The maximum number of pipelined requests we allow to be awaiting a response by default, before decoding of further requests is rejected. This bounds the memory a single connection can force us to hold onto if the peer pipelines requests without reading the corresponding responses.- See Also:
- Constant Field Values
-
queue
private final java.util.Queue<HttpMethod> queue
A queue that is used for correlating a request and a response.
-
maxPipelineDepth
private final int maxPipelineDepth
-
mustCloseAfterResponse
private boolean mustCloseAfterResponse
When set, the connection will be closed after the next response is written.
-
-
Constructor Detail
-
HttpServerCodec
public HttpServerCodec()
Creates a new instance with the default decoder options (maxInitialLineLength (4096),maxHeaderSize (8192), andmaxChunkSize (8192)).
-
HttpServerCodec
public HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize)Creates a new instance with the specified decoder options.
-
HttpServerCodec
@Deprecated public HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders)Deprecated.Prefer theHttpServerCodec(HttpDecoderConfig)constructor, to always enable header validation.Creates a new instance with the specified decoder options.
-
HttpServerCodec
@Deprecated public HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize)Deprecated.Prefer theHttpServerCodec(HttpDecoderConfig)constructor, to always enable header validation.Creates a new instance with the specified decoder options.
-
HttpServerCodec
@Deprecated public HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths)Deprecated.Prefer theHttpServerCodec(HttpDecoderConfig)constructor, to always enable header validation.Creates a new instance with the specified decoder options.
-
HttpServerCodec
@Deprecated public HttpServerCodec(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths, boolean allowPartialChunks)Deprecated.Prefer theHttpServerCodec(HttpDecoderConfig)constructor, to always enable header validation.Creates a new instance with the specified decoder options.
-
HttpServerCodec
public HttpServerCodec(HttpDecoderConfig config)
Creates a new instance with the specified decoder configuration.
-
HttpServerCodec
public HttpServerCodec(HttpDecoderConfig config, int maxPipelineDepth)
Creates a new instance with the specified decoder configuration.- Parameters:
config- the decoder configuration.maxPipelineDepth- the maximum number of requests that may be decoded while awaiting the corresponding responses to be written, before decoding of further requests is rejected with anIllegalStateException.
-
-
Method Detail
-
upgradeFrom
public void upgradeFrom(ChannelHandlerContext ctx)
Upgrades to another protocol from HTTP. Removes theHttpRequestDecoderandHttpResponseEncoderfrom the pipeline.- Specified by:
upgradeFromin interfaceHttpServerUpgradeHandler.SourceCodec
-
enqueueMethod
private boolean enqueueMethod(HttpMethod method)
-
-