Skip to content

Commit 54364d6

Browse files
committed
Close noVNC WebSocket when console session times out
1 parent c05ee03 commit 54364d6

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

‎services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,16 @@ public void closeClient() {
362362
this.connectionAlive = false;
363363
// Clear buffer reference to allow GC when client disconnects
364364
this.readBuffer = null;
365-
ConsoleProxy.removeViewer(this);
365+
366+
try {
367+
if (session != null && session.isOpen()) {
368+
session.disconnect();
369+
}
370+
} catch (IOException e) {
371+
logger.warn("Failed to disconnect WebSocket session for client [{}].", clientId, e);
372+
} finally {
373+
ConsoleProxy.removeViewer(this);
374+
}
366375
}
367376

368377
@Override

‎services/console-proxy/server/src/test/java/com/cloud/consoleproxy/ConsoleProxyNoVncClientTest.java‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
// under the License.
1717
package com.cloud.consoleproxy;
1818

19+
import org.eclipse.jetty.websocket.api.Session;
1920
import org.junit.Assert;
2021
import org.junit.Test;
22+
import org.mockito.Mockito;
2123

2224
public class ConsoleProxyNoVncClientTest {
2325
@Test
@@ -42,4 +44,16 @@ public void updateFrontEndActivityTimeUpdatesTimestamp() throws InterruptedExcep
4244
long updatedActivityTime = client.getClientLastFrontEndActivityTime();
4345
Assert.assertTrue(updatedActivityTime > previousActivityTime);
4446
}
47+
48+
@Test
49+
public void closeClientDisconnectsOpenWebSocketSession() throws Exception {
50+
Session session = Mockito.mock(Session.class);
51+
Mockito.when(session.isOpen()).thenReturn(true);
52+
53+
ConsoleProxyNoVncClient client = new ConsoleProxyNoVncClient(session);
54+
55+
client.closeClient();
56+
57+
Mockito.verify(session).disconnect();
58+
}
4559
}

0 commit comments

Comments
 (0)