From a11074ba5af088c677958c3e37f9b308f8d7054b Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Mon, 27 May 2019 13:11:25 +1000 Subject: [PATCH] Fix crash --- SignalMessaging/utils/ThreadUtil.m | 2 +- SignalServiceKit/src/Loki/Messages/LKAddressMessage.m | 2 +- SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.h | 3 +-- SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.m | 4 ++-- SignalServiceKit/src/Messages/OWSMessageManager.m | 6 +++--- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/SignalMessaging/utils/ThreadUtil.m b/SignalMessaging/utils/ThreadUtil.m index bf5c52f55..24a531a6e 100644 --- a/SignalMessaging/utils/ThreadUtil.m +++ b/SignalMessaging/utils/ThreadUtil.m @@ -87,7 +87,7 @@ typedef void (^BuildOutgoingMessageCompletionBlock)(TSOutgoingMessage *savedMess + (LKEphemeralMessage *)enqueueAcceptFriendRequestMessageInThread:(TSThread *)thread { - LKEphemeralMessage *emptyMessage = [LKEphemeralMessage createEmptyOutgoingMessageInThread:thread]; + LKEphemeralMessage *emptyMessage = [[LKEphemeralMessage alloc] initInThread:thread]; [self.dbConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction]; }]; diff --git a/SignalServiceKit/src/Loki/Messages/LKAddressMessage.m b/SignalServiceKit/src/Loki/Messages/LKAddressMessage.m index e82abd15d..cedfb5605 100644 --- a/SignalServiceKit/src/Loki/Messages/LKAddressMessage.m +++ b/SignalServiceKit/src/Loki/Messages/LKAddressMessage.m @@ -15,7 +15,7 @@ - (instancetype)initInThread:(nullable TSThread *)thread address:(NSString *)address port:(uint16_t)port isPing:(bool)isPing { - self = [LKEphemeralMessage createEmptyOutgoingMessageInThread:thread]; + self = [super initInThread:thread]; if (self) { _address = address; _port = port; diff --git a/SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.h b/SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.h index a60c7b1b1..a94634e17 100644 --- a/SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.h +++ b/SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.h @@ -5,8 +5,7 @@ NS_ASSUME_NONNULL_BEGIN NS_SWIFT_NAME(EphemeralMessage) @interface LKEphemeralMessage : TSOutgoingMessage -/// Used for e.g. session initialization. -+ (LKEphemeralMessage *)createEmptyOutgoingMessageInThread:(TSThread *)thread; +- (instancetype)initInThread:(nullable TSThread *)thread; @end diff --git a/SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.m b/SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.m index f74ba80c8..8aefa3f7d 100644 --- a/SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.m +++ b/SignalServiceKit/src/Loki/Messages/LKEphemeralMessage.m @@ -3,8 +3,8 @@ @implementation LKEphemeralMessage -+ (LKEphemeralMessage *)createEmptyOutgoingMessageInThread:(TSThread *)thread { - return [[LKEphemeralMessage alloc] initOutgoingMessageWithTimestamp:NSDate.ows_millisecondTimeStamp inThread:thread messageBody:@"" attachmentIds:[NSMutableArray new] +- (instancetype)initInThread:(nullable TSThread *)thread { + return [self initOutgoingMessageWithTimestamp:NSDate.ows_millisecondTimeStamp inThread:thread messageBody:@"" attachmentIds:[NSMutableArray new] expiresInSeconds:0 expireStartedAt:0 isVoiceMessage:NO groupMetaMessage:TSGroupMetaMessageUnspecified quotedMessage:nil contactShare:nil linkPreview:nil]; } diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 7006544b2..dc5671d51 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -1029,7 +1029,7 @@ NS_ASSUME_NONNULL_BEGIN [thread saveWithTransaction:transaction]; // Loki: Send an empty message to trigger the session reset code for both parties - LKEphemeralMessage *emptyMessage = [LKEphemeralMessage createEmptyOutgoingMessageInThread:thread]; + LKEphemeralMessage *emptyMessage = [[LKEphemeralMessage alloc] initInThread:thread]; [self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction]; OWSLogDebug(@"[Loki] Session reset received from %@.", envelope.source); @@ -1498,7 +1498,7 @@ NS_ASSUME_NONNULL_BEGIN [existingFriendRequestMessage saveFriendRequestStatus:LKMessageFriendRequestStatusAccepted withTransaction:transaction]; } // The two lines below are equivalent to calling [ThreadUtil enqueueAcceptFriendRequestMessageInThread:thread] - LKEphemeralMessage *emptyMessage = [LKEphemeralMessage createEmptyOutgoingMessageInThread:thread]; + LKEphemeralMessage *emptyMessage = [[LKEphemeralMessage alloc] initInThread:thread]; [self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction]; } else if (!thread.isContactFriend) { // Checking that the sender of the message isn't already a friend is necessary because otherwise @@ -1736,7 +1736,7 @@ NS_ASSUME_NONNULL_BEGIN // If we were the ones to initiate the reset then we need to send back an empty message if (thread.sessionResetState == TSContactThreadSessionResetStateInitiated) { - LKEphemeralMessage *emptyMessage = [LKEphemeralMessage createEmptyOutgoingMessageInThread:thread]; + LKEphemeralMessage *emptyMessage = [[LKEphemeralMessage alloc] initInThread:thread]; [self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction]; }