Only send event upstream once the Ssl handshake was completed successfull. See #358
Conflicts: handler/src/main/java/io/netty/handler/ssl/SslHandler.java
This commit is contained in:
parent
e2bdc2234d
commit
5852d82ad6
@ -187,17 +187,6 @@ public class SslHandler extends FrameDecoder
|
|||||||
private final NonReentrantLock pendingEncryptedWritesLock = new NonReentrantLock();
|
private final NonReentrantLock pendingEncryptedWritesLock = new NonReentrantLock();
|
||||||
private volatile boolean issueHandshake;
|
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.channel(), future.cause());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
private final SSLEngineInboundCloseFuture sslEngineCloseFuture = new SSLEngineInboundCloseFuture();
|
private final SSLEngineInboundCloseFuture sslEngineCloseFuture = new SSLEngineInboundCloseFuture();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -840,14 +829,7 @@ public class SslHandler extends FrameDecoder
|
|||||||
|
|
||||||
if (result.bytesProduced() > 0) {
|
if (result.bytesProduced() > 0) {
|
||||||
outNetBuf.flip();
|
outNetBuf.flip();
|
||||||
<<<<<<< HEAD
|
|
||||||
ChannelBuffer msg = ChannelBuffers.buffer(outNetBuf.remaining());
|
ChannelBuffer msg = ChannelBuffers.buffer(outNetBuf.remaining());
|
||||||
|
|
||||||
=======
|
|
||||||
ChannelBuffer msg = ctx.getChannel().getConfig().getBufferFactory().getBuffer(outNetBuf.remaining());
|
|
||||||
|
|
||||||
|
|
||||||
>>>>>>> d2ec45e... Use the correct ChannelBufferFactory when creating new ChannelBuffers. See #335
|
|
||||||
// Transfer the bytes to the new ChannelBuffer using some safe method that will also
|
// Transfer the bytes to the new ChannelBuffer using some safe method that will also
|
||||||
// work with "non" heap buffers
|
// work with "non" heap buffers
|
||||||
//
|
//
|
||||||
@ -1259,13 +1241,27 @@ public class SslHandler extends FrameDecoder
|
|||||||
* Calls {@link #handshake()} once the {@link Channel} is connected
|
* Calls {@link #handshake()} once the {@link Channel} is connected
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
|
public void channelConnected(final ChannelHandlerContext ctx, final ChannelStateEvent e) throws Exception {
|
||||||
if (issueHandshake) {
|
if (issueHandshake) {
|
||||||
// issue and handshake and add a listener to it which will fire an exception event if an exception was thrown
|
// issue and handshake and add a listener to it which will fire an exception event if an exception was thrown while doing the handshake
|
||||||
// while doing the handshake
|
handshake().addListener(new ChannelFutureListener() {
|
||||||
handshake().addListener(HANDSHAKE_LISTENER);
|
|
||||||
|
@Override
|
||||||
|
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…
Reference in New Issue
Block a user