public class SniHandler extends AbstractSniHandler<SslContext>
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 | Field and Description |
|---|---|
protected io.netty.util.AsyncMapping<String,SslContext> |
mapping |
| Constructor and Description |
|---|
SniHandler(io.netty.util.AsyncMapping<? super String,? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by AsyncMapping |
SniHandler(io.netty.util.DomainNameMapping<? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by DomainNameMapping |
SniHandler(io.netty.util.Mapping<? super String,? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by Mapping |
| Modifier and Type | Method and Description |
|---|---|
String |
hostname() |
protected io.netty.util.concurrent.Future<SslContext> |
lookup(io.netty.channel.ChannelHandlerContext ctx,
String hostname)
The default implementation will simply call
AsyncMapping.map(Object, Promise) but
users can override this method to implement custom behavior. |
protected void |
onLookupComplete(io.netty.channel.ChannelHandlerContext ctx,
String hostname,
io.netty.util.concurrent.Future<SslContext> future)
Called upon completion of the
AbstractSniHandler.lookup(ChannelHandlerContext, String) Future. |
protected void |
replaceHandler(io.netty.channel.ChannelHandlerContext ctx,
String hostname,
SslContext sslContext)
The default implementation of this method will simply replace
this SniHandler
instance with a SslHandler. |
SslContext |
sslContext() |
bind, close, connect, decode, deregister, disconnect, flush, read, writeactualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggeredchannelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtensureNotSharable, handlerAdded, isSharableprotected final io.netty.util.AsyncMapping<String,SslContext> mapping
public SniHandler(io.netty.util.Mapping<? super String,? extends SslContext> mapping)
SslContext
maintained by Mappingmapping - the mapping of domain name to SslContextpublic SniHandler(io.netty.util.DomainNameMapping<? extends SslContext> mapping)
SslContext
maintained by DomainNameMappingmapping - the mapping of domain name to SslContextpublic SniHandler(io.netty.util.AsyncMapping<? super String,? extends SslContext> mapping)
SslContext
maintained by AsyncMappingmapping - the mapping of domain name to SslContextpublic String hostname()
public SslContext sslContext()
SslContextprotected io.netty.util.concurrent.Future<SslContext> lookup(io.netty.channel.ChannelHandlerContext ctx, String hostname) throws Exception
AsyncMapping.map(Object, Promise) but
users can override this method to implement custom behavior.lookup in class AbstractSniHandler<SslContext>ExceptionAsyncMapping.map(Object, Promise)protected final void onLookupComplete(io.netty.channel.ChannelHandlerContext ctx,
String hostname,
io.netty.util.concurrent.Future<SslContext> future)
throws Exception
AbstractSniHandlerAbstractSniHandler.lookup(ChannelHandlerContext, String) Future.onLookupComplete in class AbstractSniHandler<SslContext>ExceptionAbstractSniHandler.lookup(ChannelHandlerContext, String)protected void replaceHandler(io.netty.channel.ChannelHandlerContext ctx,
String hostname,
SslContext sslContext)
throws Exception
this SniHandler
instance with a SslHandler. Users may override this method to implement custom behavior.
Please be aware that this method may get called after a client has already disconnected and
custom implementations must take it into consideration when overriding this method.
It's also possible for the hostname argument to be null.ExceptionCopyright © 2008–2019 The Netty Project. All rights reserved.