From 54f73730372e56b655cf82c89b8adb2aa5a62c4f Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 15 May 2018 15:13:11 -0400 Subject: [PATCH] Clean up logging, start messages timer regardless of current configuration // FREEBIE --- .../src/Messages/OWSDisappearingMessagesJob.m | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/SignalServiceKit/src/Messages/OWSDisappearingMessagesJob.m b/SignalServiceKit/src/Messages/OWSDisappearingMessagesJob.m index e173e15df..161cdcb25 100644 --- a/SignalServiceKit/src/Messages/OWSDisappearingMessagesJob.m +++ b/SignalServiceKit/src/Messages/OWSDisappearingMessagesJob.m @@ -175,13 +175,6 @@ void AssertIsOnDisappearingMessagesQueue() return; } - OWSDisappearingMessagesConfiguration *disappearingConfig = - [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:message.uniqueThreadId transaction:transaction]; - - if (!disappearingConfig.isEnabled) { - return; - } - [self setExpirationForMessage:message expirationStartedAt:expirationStartedAt transaction:transaction]; } @@ -223,9 +216,9 @@ void AssertIsOnDisappearingMessagesQueue() // Become eventually consistent in the case that the remote changed their settings at the same time. // Also in case remote doesn't support expiring messages OWSDisappearingMessagesConfiguration *disappearingMessagesConfiguration = - [OWSDisappearingMessagesConfiguration fetchOrCreateDefaultWithThreadId:message.uniqueThreadId - transaction:transaction]; - + [OWSDisappearingMessagesConfiguration fetchOrCreateDefaultWithThreadId:message.uniqueThreadId + transaction:transaction]; + if (message.expiresInSeconds == 0) { disappearingMessagesConfiguration.enabled = NO; } else { @@ -236,7 +229,7 @@ void AssertIsOnDisappearingMessagesQueue() if (!disappearingMessagesConfiguration.dictionaryValueDidChange) { return; } - DDLogInfo(@"%@ becoming consistent message configuration: %@", + DDLogInfo(@"%@ becoming consistent with disappearing message configuration: %@", self.logTag, disappearingMessagesConfiguration.dictionaryValue); [disappearingMessagesConfiguration saveWithTransaction:transaction]; @@ -373,8 +366,8 @@ void AssertIsOnDisappearingMessagesQueue() dispatch_async(OWSDisappearingMessagesJob.serialQueue, ^{ NSUInteger deletedCount = [self runLoop]; - // Normally deletions should happen via the disappearanceTimer, to make sure that they're timely. - // So, if we're deleting something via the fallback timer, something may have gone wrong. The + // Normally deletions should happen via the disappearanceTimer, to make sure that they're prompt. + // So, if we're deleting something via this fallback timer, something may have gone wrong. The // exception is if we're in close proximity to the disappearanceTimer, in which case a race condition // is inevitable. if (!recentlyScheduledDisappearanceTimer && deletedCount > 0) { @@ -396,12 +389,16 @@ void AssertIsOnDisappearingMessagesQueue() - (void)cleanupMessagesWhichFailedToStartExpiringWithTransaction:(YapDatabaseReadWriteTransaction *)transaction { - [self.disappearingMessagesFinder enumerateMessagesWhichFailedToStartExpiringWithBlock:^( - TSMessage *_Nonnull message) { - DDLogWarn(@"%@ starting old timer for message timestamp: %lu", self.logTag, (unsigned long)message.timestamp); - [self setExpirationForMessage:message expirationStartedAt:message.timestampForSorting transaction:transaction]; - } - transaction:transaction]; + [self.disappearingMessagesFinder + enumerateMessagesWhichFailedToStartExpiringWithBlock:^(TSMessage *_Nonnull message) { + OWSProdLogAndFail( + @"%@ starting old timer for message timestamp: %lu", self.logTag, (unsigned long)message.timestamp); + + // We don't know when it was actually read, so assume it was read as soon as it was received. + uint64_t readTimeBestGuess = message.timestampForSorting; + [self setExpirationForMessage:message expirationStartedAt:readTimeBestGuess transaction:transaction]; + } + transaction:transaction]; } #pragma mark - Notifications