From 6e0b956e61926c7b33b590362242eae9ef768779 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Sun, 26 May 2019 14:27:30 -0700 Subject: [PATCH] Only set the uninstall feedback timestamp when it's zero Otherwise each send will update the timestamp, preventing it from aging out to the point where the cleaner will pick it up. --- .../textsecuregcm/push/GCMSender.java | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java index 9398128b6..12de116aa 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java @@ -109,22 +109,16 @@ public class GCMSender implements Managed { } private void handleBadRegistration(Result result) { - GcmMessage message = (GcmMessage)result.getContext(); - logger.warn("Got GCM unregistered notice! " + message.getGcmId()); - + GcmMessage message = (GcmMessage) result.getContext(); Optional account = getAccountForEvent(message); if (account.isPresent()) { Device device = account.get().getDevice(message.getDeviceId()).get(); - device.setUninstalledFeedbackTimestamp(Util.todayInMillis()); -// device.setGcmId(null); -// device.setFetchesMessages(false); - accountsManager.update(account.get()); - -// if (!account.get().isActive()) { -// directoryQueue.deleteRegisteredUser(account.get().getNumber()); -// } + if (device.getUninstalledFeedbackTimestamp() == 0) { + device.setUninstalledFeedbackTimestamp(Util.todayInMillis()); + accountsManager.update(account.get()); + } } unregistered.mark(); @@ -164,12 +158,8 @@ public class GCMSender implements Managed { if (device.isPresent()) { if (message.getGcmId().equals(device.get().getGcmId())) { - logger.info("GCM Unregister GCM ID matches!"); - - if (device.get().getPushTimestamp() == 0 || System.currentTimeMillis() > (device.get().getPushTimestamp() + TimeUnit.SECONDS.toMillis(10))) - { - logger.info("GCM Unregister Timestamp matches!"); + if (device.get().getPushTimestamp() == 0 || System.currentTimeMillis() > (device.get().getPushTimestamp() + TimeUnit.SECONDS.toMillis(10))) { return account; } }