diff --git a/handler/src/main/java/io/netty/handler/ssl/JdkAlpnSslEngine.java b/handler/src/main/java/io/netty/handler/ssl/JdkAlpnSslEngine.java index 6cfacb8b80..5390c738ee 100644 --- a/handler/src/main/java/io/netty/handler/ssl/JdkAlpnSslEngine.java +++ b/handler/src/main/java/io/netty/handler/ssl/JdkAlpnSslEngine.java @@ -16,20 +16,18 @@ package io.netty.handler.ssl; import static io.netty.util.internal.ObjectUtil.checkNotNull; + import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelectionListener; import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelector; -import io.netty.util.internal.PlatformDependent; - -import java.util.LinkedHashSet; -import java.util.List; - -import javax.net.ssl.SSLEngine; -import javax.net.ssl.SSLException; - import org.eclipse.jetty.alpn.ALPN; import org.eclipse.jetty.alpn.ALPN.ClientProvider; import org.eclipse.jetty.alpn.ALPN.ServerProvider; +import javax.net.ssl.SSLEngine; +import javax.net.ssl.SSLException; +import java.util.LinkedHashSet; +import java.util.List; + final class JdkAlpnSslEngine extends JdkSslEngine { private static boolean available; @@ -62,12 +60,15 @@ final class JdkAlpnSslEngine extends JdkSslEngine { "protocolSelector"); ALPN.put(engine, new ServerProvider() { @Override - public String select(List protocols) { + public String select(List protocols) throws SSLException { try { return protocolSelector.select(protocols); + } catch (SSLException e) { + throw e; } catch (Throwable t) { - PlatformDependent.throwException(t); - return null; + // Ensure that all exceptions are propagated as SSLExceptions + // so that the SslHandler properly fails the handshake. + throw new SSLException(t); } } @@ -87,11 +88,15 @@ final class JdkAlpnSslEngine extends JdkSslEngine { } @Override - public void selected(String protocol) { + public void selected(String protocol) throws SSLException { try { protocolListener.selected(protocol); + } catch (SSLException e) { + throw e; } catch (Throwable t) { - PlatformDependent.throwException(t); + // Ensure that all exceptions are propagated as SSLExceptions + // so that the SslHandler properly fails the handshake. + throw new SSLException(t); } } diff --git a/pom.xml b/pom.xml index 54d603e872..5e58114c39 100644 --- a/pom.xml +++ b/pom.xml @@ -652,7 +652,7 @@ org.eclipse.jetty.alpn alpn-api - 1.1.0.v20141014 + 1.1.2.v20150522 org.mortbay.jetty.alpn