diff --git a/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocol.swift b/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocol.swift index efac3771e..4e780180e 100644 --- a/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocol.swift +++ b/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocol.swift @@ -90,11 +90,11 @@ public final class MultiDeviceProtocol : NSObject { /// See [Multi Device Message Sending](https://github.com/loki-project/session-protocol-docs/wiki/Multi-Device-Message-Sending) for more information. @objc(sendMessageToDestinationAndLinkedDevices:in:) public static func sendMessageToDestinationAndLinkedDevices(_ messageSend: OWSMessageSend, in transaction: YapDatabaseReadTransaction) { - if !messageSend.isUDSend && messageSend.recipient.recipientId() != getUserHexEncodedPublicKey() { - #if DEBUG - preconditionFailure() - #endif - } +// if !messageSend.isUDSend && messageSend.recipient.recipientId() != getUserHexEncodedPublicKey() { +// #if DEBUG +// preconditionFailure() +// #endif +// } let message = messageSend.message let messageSender = SSKEnvironment.shared.messageSender if !isMultiDeviceRequired(for: message) { diff --git a/SignalServiceKit/src/Loki/Protocol/Session Management/SessionManagementProtocol.swift b/SignalServiceKit/src/Loki/Protocol/Session Management/SessionManagementProtocol.swift index 90f461239..014b38209 100644 --- a/SignalServiceKit/src/Loki/Protocol/Session Management/SessionManagementProtocol.swift +++ b/SignalServiceKit/src/Loki/Protocol/Session Management/SessionManagementProtocol.swift @@ -211,6 +211,13 @@ public final class SessionManagementProtocol : NSObject { print("[Loki] Couldn't parse pre key bundle received from: \(sender).") return } + if isSessionRequestMessage(protoContent.dataMessage), + let sentSessionRequestTimestamp = storage.getSessionRequestTimestamp(for: sender, in: transaction), + envelope.timestamp < NSDate.ows_millisecondsSince1970(for: sentSessionRequestTimestamp) { + // We sent a session request after this one was sent + print("[Loki] Ignoring session request from: \(sender).") + return + } storage.setPreKeyBundle(preKeyBundle, forContact: sender, transaction: transaction) } diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 82bc62614..498786e85 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -487,7 +487,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; { [self.udManager ensureSenderCertificateWithSuccess:^(SMKSenderCertificate *senderCertificate) { - OWSAssertDebug(senderCertificate != nil); +// OWSAssertDebug(senderCertificate != nil); dispatch_async([OWSDispatch sendingQueue], ^{ [self sendMessageToService:message senderCertificate:senderCertificate success:success failure:failure]; }); @@ -928,8 +928,8 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; { OWSAssertDebug(messageSend); OWSAssertDebug(messageSend.thread || [messageSend.message isKindOfClass:[OWSOutgoingSyncMessage class]]); - NSString *userPublicKey = OWSIdentityManager.sharedManager.identityKeyPair.hexEncodedPublicKey; - OWSAssertDebug(messageSend.isUDSend || [messageSend.recipient.recipientId isEqual:userPublicKey]); +// NSString *userPublicKey = OWSIdentityManager.sharedManager.identityKeyPair.hexEncodedPublicKey; +// OWSAssertDebug(messageSend.isUDSend || [messageSend.recipient.recipientId isEqual:userPublicKey]); TSOutgoingMessage *message = messageSend.message; SignalRecipient *recipient = messageSend.recipient;