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, final UUID messageGuid) { + return messagesCache.takeEphemeralMessage(destinationUuid, destinationDevice, messageGuid); + } + 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 0701ba8bd..ced591ad2 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java @@ -225,6 +225,12 @@ public class WebSocketConnection implements DispatchChannel, MessageAvailability @Override public void handleEphemeralMessageAvailable(final UUID ephemeralMessageGuid) { ephemeralMessageAvailableMeter.mark(); + + final Optional maybeMessage = messagesManager.takeEphemeralMessage(account.getUuid(), device.getId(), ephemeralMessageGuid); + + if (maybeMessage.isPresent()) { + sendMessage(maybeMessage.get(), Optional.empty(), false); + } } @Override