Ensure that either SslHandler's handshake timeout or the handshake

itself (or its failure) take place but not both.
This commit is contained in:
ab 2012-10-10 14:16:13 +02:00
parent 129c19c33e
commit ce88ae3889

View File

@ -300,10 +300,11 @@ public class SslHandler
} }
SSLException e = new SSLException("handshake timed out"); SSLException e = new SSLException("handshake timed out");
future.setFailure(e); if ( future.setFailure(e) ){
ctx.fireExceptionCaught(e); ctx.fireExceptionCaught(e);
ctx.close(); ctx.close();
} }
}
}, handshakeTimeoutMillis, TimeUnit.MILLISECONDS); }, handshakeTimeoutMillis, TimeUnit.MILLISECONDS);
} else { } else {
timeoutFuture = null; timeoutFuture = null;
@ -320,11 +321,12 @@ public class SslHandler
handshakeFutures.add(future); handshakeFutures.add(future);
flush(ctx, ctx.newFuture()); flush(ctx, ctx.newFuture());
} catch (Exception e) { } catch (Exception e) {
future.setFailure(e); if ( future.setFailure(e) ) {
ctx.fireExceptionCaught(e); ctx.fireExceptionCaught(e);
ctx.close(); ctx.close();
} }
} }
}
}); });
return future; return future;