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, write
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggered
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught
ensureNotSharable, handlerAdded, isSharable
protected final io.netty.util.AsyncMapping<String,SslContext> mapping
public SniHandler(io.netty.util.Mapping<? super String,? extends SslContext> mapping)
SslContext
maintained by Mapping
mapping
- the mapping of domain name to SslContext
public SniHandler(io.netty.util.DomainNameMapping<? extends SslContext> mapping)
SslContext
maintained by DomainNameMapping
mapping
- the mapping of domain name to SslContext
public SniHandler(io.netty.util.AsyncMapping<? super String,? extends SslContext> mapping)
SslContext
maintained by AsyncMapping
mapping
- the mapping of domain name to SslContext
public String hostname()
public SslContext sslContext()
SslContext
protected 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>
Exception
AsyncMapping.map(Object, Promise)
protected final void onLookupComplete(io.netty.channel.ChannelHandlerContext ctx, String hostname, io.netty.util.concurrent.Future<SslContext> future) throws Exception
AbstractSniHandler
AbstractSniHandler.lookup(ChannelHandlerContext, String)
Future
.onLookupComplete
in class AbstractSniHandler<SslContext>
Exception
AbstractSniHandler.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
.Exception
Copyright © 2008–2019 The Netty Project. All rights reserved.