Only send event upstream once the Ssl handshake was completed successfull. See #358
This commit is contained in:
parent
bd4358b3ad
commit
03f890a882
@ -197,16 +197,6 @@ public class SslHandler extends FrameDecoder
|
||||
private final NonReentrantLock pendingEncryptedWritesLock = new NonReentrantLock();
|
||||
private volatile boolean issueHandshake;
|
||||
|
||||
private static final ChannelFutureListener HANDSHAKE_LISTENER = new ChannelFutureListener() {
|
||||
|
||||
@Override
|
||||
public void operationComplete(ChannelFuture future) throws Exception {
|
||||
if (!future.isSuccess()) {
|
||||
Channels.fireExceptionCaught(future.getChannel(), future.getCause());
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
private final SSLEngineInboundCloseFuture sslEngineCloseFuture = new SSLEngineInboundCloseFuture();
|
||||
|
||||
@ -1270,13 +1260,26 @@ public class SslHandler extends FrameDecoder
|
||||
* Calls {@link #handshake()} once the {@link Channel} is connected
|
||||
*/
|
||||
@Override
|
||||
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
|
||||
public void channelConnected(final ChannelHandlerContext ctx, final ChannelStateEvent e) throws Exception {
|
||||
if (issueHandshake) {
|
||||
// issue and handshake and add a listener to it which will fire an exception event if an exception was thrown
|
||||
// while doing the handshake
|
||||
handshake().addListener(HANDSHAKE_LISTENER);
|
||||
// issue and handshake and add a listener to it which will fire an exception event if an exception was thrown while doing the handshake
|
||||
handshake().addListener(new ChannelFutureListener() {
|
||||
|
||||
public void operationComplete(ChannelFuture future) throws Exception {
|
||||
if (!future.isSuccess()) {
|
||||
Channels.fireExceptionCaught(future.getChannel(), future.getCause());
|
||||
} else {
|
||||
// Send the event upstream after the handshake was completed without an error.
|
||||
//
|
||||
// See https://github.com/netty/netty/issues/358
|
||||
ctx.sendUpstream(e);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
super.channelConnected(ctx, e);
|
||||
}
|
||||
super.channelConnected(ctx, e);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user