From b7afe5b036c72866e5317038f9a0e94456b20c92 Mon Sep 17 00:00:00 2001 From: Pascal Scheiben Date: Tue, 11 Jun 2019 10:39:00 +0200 Subject: [PATCH] fix when proxy tunneling failed (IOException is hidden) JDK-8173620 --- .../org/java_websocket/client/WebSocketClient.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/org/java_websocket/client/WebSocketClient.java b/src/main/java/org/java_websocket/client/WebSocketClient.java index fc86d813..71d0010a 100644 --- a/src/main/java/org/java_websocket/client/WebSocketClient.java +++ b/src/main/java/org/java_websocket/client/WebSocketClient.java @@ -28,6 +28,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.lang.reflect.InvocationTargetException; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.Socket; @@ -452,6 +453,15 @@ public void run() { onWebsocketError( engine, e ); engine.closeConnection( CloseFrame.NEVER_CONNECTED, e.getMessage() ); return; + } catch (InternalError e) { + // https://bugs.openjdk.java.net/browse/JDK-8173620 + if (e.getCause() instanceof InvocationTargetException && e.getCause().getCause() instanceof IOException) { + IOException cause = (IOException) e.getCause().getCause(); + onWebsocketError(engine, cause); + engine.closeConnection(CloseFrame.NEVER_CONNECTED, cause.getMessage()); + return; + } + throw e; } writeThread = new Thread( new WebsocketWriteThread(this) );