diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java index 30720a9db..818195200 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java @@ -508,13 +508,7 @@ public class WebSocketConnection implements ClientEventListener { message = "OK"; } - try { - client.close(code, message); - } catch (final Exception e) { - logger.warn("Orderly close failed", e); - - client.hardDisconnectQuietly(); - } + client.close(code, message); } private record StoredMessageInfo(UUID guid, long serverTimestamp) { diff --git a/websocket-resources/src/main/java/org/whispersystems/websocket/WebSocketClient.java b/websocket-resources/src/main/java/org/whispersystems/websocket/WebSocketClient.java index ee281dba1..e41200fc3 100644 --- a/websocket-resources/src/main/java/org/whispersystems/websocket/WebSocketClient.java +++ b/websocket-resources/src/main/java/org/whispersystems/websocket/WebSocketClient.java @@ -62,9 +62,6 @@ public class WebSocketClient { pendingRequestMapper.remove(requestId); future.completeExceptionally(x); } - - @Override - public void writeSuccess() {} }); } catch (WebSocketException e) { logger.debug("Write", e); @@ -87,8 +84,17 @@ public class WebSocketClient { return session.isOpen(); } - public void close(int code, String message) { - session.close(code, message); + public void close(final int code, final String message) { + session.close(code, message, new WriteCallback() { + @Override + public void writeFailed(final Throwable throwable) { + try { + session.disconnect(); + } catch (final Exception e) { + logger.warn("Failed to disconnect session", e); + } + } + }); } public boolean shouldDeliverStories() { @@ -96,16 +102,7 @@ public class WebSocketClient { return Stories.parseReceiveStoriesHeader(value); } - public void hardDisconnectQuietly() { - try { - session.disconnect(); - } catch (Exception e) { - // quietly we said - } - } - private long generateRequestId() { return Math.abs(SECURE_RANDOM.nextLong()); } - }