From d7403da0d04b4112e1ce972a75bab4a05f5db4c1 Mon Sep 17 00:00:00 2001 From: lprimak Date: Thu, 13 Nov 2025 15:38:25 -0600 Subject: [PATCH] bugfix: TyrusHttpUpgradeHandler holds on to ClassLoader after session is closed, causing a memory and ClassLoader leak in application servers --- .../org/glassfish/tyrus/servlet/TyrusHttpUpgradeHandler.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/containers/servlet/src/main/java/org/glassfish/tyrus/servlet/TyrusHttpUpgradeHandler.java b/containers/servlet/src/main/java/org/glassfish/tyrus/servlet/TyrusHttpUpgradeHandler.java index ae30b4c5..8454583e 100644 --- a/containers/servlet/src/main/java/org/glassfish/tyrus/servlet/TyrusHttpUpgradeHandler.java +++ b/containers/servlet/src/main/java/org/glassfish/tyrus/servlet/TyrusHttpUpgradeHandler.java @@ -281,6 +281,8 @@ private void httpSessionForcedClose(int closeCode, String closeReason) { connection.close(new CloseReason(CloseReason.CloseCodes.getCloseCode(closeCode), closeReason)); closed = true; wc.close(); + connection = null; + upgradeInfo = null; } catch (Exception e) { LOGGER.log(Level.CONFIG, e.getMessage(), e); } @@ -293,6 +295,8 @@ private void close(int closeCode, String closeReason) { connection.close(CloseReasons.create(CloseReason.CloseCodes.getCloseCode(closeCode), closeReason)); closed = true; wc.close(); + connection = null; + upgradeInfo = null; } catch (Exception e) { LOGGER.log(Level.CONFIG, e.getMessage(), e); }