diff --git a/src/Messages/OWSMessageSender.m b/src/Messages/OWSMessageSender.m index e0c2043a7..9eb3b1750 100644 --- a/src/Messages/OWSMessageSender.m +++ b/src/Messages/OWSMessageSender.m @@ -626,19 +626,25 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; for (NSNumber *deviceNumber in recipient.devices) { @try { - // DEPRECATED - Remove after all clients have been upgraded. - BOOL isLegacyMessage = ![message isKindOfClass:[OWSOutgoingSyncMessage class]]; - __block NSDictionary *messageDict; + __block NSException *encryptionException; // Mutating session state is not thread safe, so we operate on a serial queue, shared with decryption // operations. dispatch_sync([OWSDispatch sessionCipher], ^{ - messageDict = [self encryptedMessageWithPlaintext:plainText - toRecipient:recipient.uniqueId - deviceId:deviceNumber - keyingStorage:[TSStorageManager sharedManager] - legacy:message.isLegacyMessage]; + @try { + messageDict = [self encryptedMessageWithPlaintext:plainText + toRecipient:recipient.uniqueId + deviceId:deviceNumber + keyingStorage:[TSStorageManager sharedManager] + legacy:message.isLegacyMessage]; + } @catch (NSException *exception) { + encryptionException = exception; + } }); + if (encryptionException) { + DDLogInfo(@"%@ Exception during encryption: %@", self.tag, encryptionException); + @throw encryptionException; + } if (messageDict) { [messagesArray addObject:messageDict]; diff --git a/src/Storage/TSStorageManager.m b/src/Storage/TSStorageManager.m index 49bba31ed..34903386d 100644 --- a/src/Storage/TSStorageManager.m +++ b/src/Storage/TSStorageManager.m @@ -118,7 +118,8 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass"; OWSAnalyticsCritical(@"Could not load database"); // Try to reset app by deleting database. - [self resetSignalStorage]; + // Disabled resetting storage until we have better data on why this happens. + // [self resetSignalStorage]; if (![self tryToLoadDatabase]) { OWSAnalyticsCritical(@"Could not load database (second attempt)");