From 9a18159bfedd1a3185a45dd860526d3afb2f15ea Mon Sep 17 00:00:00 2001 From: Roger Kapsi Date: Fri, 16 Sep 2016 12:26:12 -0400 Subject: [PATCH] Catch+fire Exceptions thrown from SniHandler's select() method Motivation Give the user the ability to back out from SNI negoations. Modifications Put a try-catch around the select() call and re-fire any caught Exceptions. Result Fixes #5787 --- .../src/main/java/io/netty/handler/ssl/SniHandler.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/handler/src/main/java/io/netty/handler/ssl/SniHandler.java b/handler/src/main/java/io/netty/handler/ssl/SniHandler.java index c53716e6cb..784c9c5afc 100644 --- a/handler/src/main/java/io/netty/handler/ssl/SniHandler.java +++ b/handler/src/main/java/io/netty/handler/ssl/SniHandler.java @@ -244,8 +244,12 @@ public class SniHandler extends ByteToMessageDecoder implements ChannelOutboundH final String hostname = in.toString(offset, serverNameLength, CharsetUtil.UTF_8); - select(ctx, IDN.toASCII(hostname, - IDN.ALLOW_UNASSIGNED).toLowerCase(Locale.US)); + try { + select(ctx, IDN.toASCII(hostname, + IDN.ALLOW_UNASSIGNED).toLowerCase(Locale.US)); + } catch (Throwable t) { + ctx.fireExceptionCaught(t); + } return; } else { // invalid enum value