diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 1686ea842..709b74bd7 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -901,12 +901,14 @@ NS_ASSUME_NONNULL_BEGIN return; } - NSString *localNumber = self.tsAccountManager.localNumber; -// if (![localNumber isEqualToString:envelope.source]) { -// // Sync messages should only come from linked devices. -// OWSProdErrorWEnvelope([OWSAnalyticsEvents messageManagerErrorSyncMessageFromUnknownSource], envelope); -// return; -// } + NSString *userHexEncodedPublicKey = OWSIdentityManager.sharedManager.identityKeyPair.hexEncodedPublicKey; + NSSet *linkedDeviceHexEncodedPublicKeys = [LKDatabaseUtilities getLinkedDeviceHexEncodedPublicKeysFor:userHexEncodedPublicKey in:transaction]; + if (![linkedDeviceHexEncodedPublicKeys contains:^BOOL(NSString *hexEncodedPublicKey) { + return [hexEncodedPublicKey isEqual:envelope.source]; + }]) { + OWSProdErrorWEnvelope([OWSAnalyticsEvents messageManagerErrorSyncMessageFromUnknownSource], envelope); + return; + } if (syncMessage.sent) { OWSIncomingSentMessageTranscript *transcript =