diff --git a/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java b/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java index eebbdcad248d..b49858ccdc1c 100644 --- a/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java +++ b/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java @@ -100,6 +100,7 @@ public void preInit(ServerEndpointConfig serverEndpointConfig, @Override public void init(WebConnection connection) { + this.connection = connection; if (serverEndpointConfig == null) { throw new IllegalStateException( sm.getString("wsHttpUpgradeHandler.noPreInit")); @@ -212,7 +213,9 @@ public void pause() { @Override public void destroy() { + WebConnection connection = this.connection; if (connection != null) { + this.connection = null; try { connection.close(); } catch (Exception e) { diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index de2eb5699c1d..a8dc92f73fb7 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -160,6 +160,14 @@ + + + + The internal upgrade handler should close the associated + WebConnection on destroy. (remm) + + +