diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java index 2dfea2251fb..27fabb53124 100644 --- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java +++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java @@ -113,30 +113,34 @@ public class ConsoleProxyNoVncClient implements ConsoleProxyClient { if (client.isVncOverWebSocketConnectionOpen()) { updateFrontEndActivityTime(); } - connectionAlive = client.isVncOverWebSocketConnectionAlive(); + connectionAlive = session.isOpen(); try { Thread.sleep(1); - } catch (Exception e) { - s_logger.warn("Error on sleep for vnc over websocket", e); + } catch (InterruptedException e) { + s_logger.error("Error on sleep for vnc over websocket", e); } } else if (client.isVncOverNioSocket()) { byte[] bytesArr; int nextBytes = client.getNextBytes(); bytesArr = new byte[nextBytes]; client.readBytes(bytesArr, nextBytes); + s_logger.trace(String.format("Read [%s] bytes from client [%s]", nextBytes, clientId)); if (nextBytes > 0) { session.getRemote().sendBytes(ByteBuffer.wrap(bytesArr)); updateFrontEndActivityTime(); + } else { + connectionAlive = session.isOpen(); } } else { b = new byte[100]; readBytes = client.read(b); + s_logger.trace(String.format("Read [%s] bytes from client [%s]", readBytes, clientId)); if (readBytes == -1 || (readBytes > 0 && !sendReadBytesToNoVNC(b, readBytes))) { connectionAlive = false; } } } - connectionAlive = false; + s_logger.info(String.format("Connection with client [%s] is dead.", clientId)); } catch (IOException e) { s_logger.error("Error on VNC client", e); }