mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-17 21:43:25 +01:00
Close WebSockets "harshly" if a close frame write fails
This commit is contained in:
committed by
Jon Chambers
parent
767f6a90e0
commit
e53a9f3f1a
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user