public class SniHandler extends ByteToMessageDecoder
Enables SNI (Server Name Indication) extension for server side SSL. For clients support SNI, the server could have multiple host name bound on a single IP. The client will send host name in the handshake data so server could decide which certificate to choose for the host name.
Modifier and Type | Class and Description |
---|---|
private static class |
SniHandler.Selection |
ByteToMessageDecoder.Cumulator
ChannelHandler.Sharable
Modifier and Type | Field and Description |
---|---|
private static SniHandler.Selection |
EMPTY_SELECTION |
private boolean |
handshakeFailed |
private static InternalLogger |
logger |
private DomainNameMapping<SslContext> |
mapping |
private static int |
MAX_SSL_RECORDS |
private SniHandler.Selection |
selection |
COMPOSITE_CUMULATOR, MERGE_CUMULATOR
Constructor and Description |
---|
SniHandler(DomainNameMapping<? extends SslContext> mapping)
Create a SNI detection handler with configured
SslContext
maintained by DomainNameMapping |
Modifier and Type | Method and Description |
---|---|
protected void |
decode(ChannelHandlerContext ctx,
ByteBuf in,
java.util.List<java.lang.Object> out)
Decode the from one
ByteBuf to an other. |
java.lang.String |
hostname() |
private void |
select(ChannelHandlerContext ctx,
java.lang.String hostname) |
SslContext |
sslContext() |
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggered
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught
handlerAdded, isSharable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
handlerAdded
private static final int MAX_SSL_RECORDS
private static final InternalLogger logger
private static final SniHandler.Selection EMPTY_SELECTION
private final DomainNameMapping<SslContext> mapping
private boolean handshakeFailed
private volatile SniHandler.Selection selection
public SniHandler(DomainNameMapping<? extends SslContext> mapping)
SslContext
maintained by DomainNameMapping
mapping
- the mapping of domain name to SslContext
public java.lang.String hostname()
public SslContext sslContext()
protected void decode(ChannelHandlerContext ctx, ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
ByteToMessageDecoder
ByteBuf
to an other. This method will be called till either the input
ByteBuf
has nothing to read when return from this method or till nothing was read from the input
ByteBuf
.decode
in class ByteToMessageDecoder
ctx
- the ChannelHandlerContext
which this ByteToMessageDecoder
belongs toin
- the ByteBuf
from which to read dataout
- the List
to which decoded messages should be addedjava.lang.Exception
- is thrown if an error accourprivate void select(ChannelHandlerContext ctx, java.lang.String hostname)