diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 995b43ef8..8753e1fbc 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -300,7 +300,7 @@ public class WhisperServerService extends Application takeEphemeralMessage(final UUID destinationUuid, final long destinationDevice) { + return messagesCache.takeEphemeralMessage(destinationUuid, destinationDevice); + } + public OutgoingMessageEntityList getMessagesForDevice(String destination, UUID destinationUuid, long destinationDevice, final String userAgent) { RedisOperation.unchecked(() -> pushLatencyManager.recordQueueRead(destinationUuid, destinationDevice, userAgent)); 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 0367a0c55..571b6ab7e 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java @@ -224,6 +224,12 @@ public class WebSocketConnection implements DispatchChannel, MessageAvailability @Override public void handleNewEphemeralMessageAvailable() { ephemeralMessageAvailableMeter.mark(); + + final Optional maybeMessage = messagesManager.takeEphemeralMessage(account.getUuid(), device.getId()); + + if (maybeMessage.isPresent()) { + sendMessage(maybeMessage.get(), Optional.empty(), false); + } } @Override