From 7d1d7a9724640ed121799d9f811908446d8bb0f9 Mon Sep 17 00:00:00 2001 From: Lucas Fairchild-Madar Date: Fri, 25 Aug 2017 12:33:41 -0700 Subject: [PATCH] Preserve delayed initialization semantics Signed-off-by: Lucas Fairchild-Madar --- .../websocket/client/WebSocketClient.java | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java index 17eff77fbba..ec7a769cdfa 100644 --- a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java +++ b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java @@ -381,37 +381,21 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketCont if (LOG.isDebugEnabled()) LOG.debug("connect websocket {} to {}",websocket,toUri); + init(); + WebSocketUpgradeRequest wsReq = new WebSocketUpgradeRequest(this,httpClient,request); wsReq.setUpgradeListener(upgradeListener); return wsReq.sendAsync(); } - @Override - protected void doStart() throws Exception - { - if (LOG.isDebugEnabled()) - LOG.debug("Starting {}",this); - - if (isStopAtShutdown()) { - ShutdownThread.register(this); - } - - super.doStart(); - - if (LOG.isDebugEnabled()) - LOG.debug("Started {}",this); - } - @Override protected void doStop() throws Exception { if (LOG.isDebugEnabled()) LOG.debug("Stopping {}",this); - if (isStopAtShutdown()) { - ShutdownThread.deregister(this); - } + ShutdownThread.deregister(this); super.doStop(); @@ -569,6 +553,14 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketCont return httpClient.getSslContextFactory(); } + private synchronized void init() throws IOException + { + if (isStopAtShutdown() && !ShutdownThread.isRegistered(this)) + { + ShutdownThread.register(this); + } + } + /** * Factory method for new ConnectionManager * @@ -716,7 +708,7 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketCont { if (stop) { - if (!stopAtShutdown && isStarted()) { + if (!stopAtShutdown && isStarted() && !ShutdownThread.isRegistered(this)) { ShutdownThread.register(this); } }