Fix closed group session handling bug

pull/220/head
nielsandriesse 5 years ago
parent ca888c83ef
commit bbe41f9e82

@ -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) {

@ -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)
}

@ -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;

Loading…
Cancel
Save