From 98fd15fae78f20a2a12a8a178af1720088528f07 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Mon, 6 Nov 2017 10:56:45 -0500 Subject: [PATCH] Avoid groupsync deadlock - pass in transaction // FREEBIE --- .../src/Messages/DeviceSyncing/OWSSyncGroupsMessage.h | 8 ++++++-- .../src/Messages/DeviceSyncing/OWSSyncGroupsMessage.m | 2 +- SignalServiceKit/src/Messages/OWSMessageManager.m | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.h b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.h index 530997f53..212d3051b 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.h +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.h @@ -1,12 +1,16 @@ -// Copyright © 2016 Open Whisper Systems. All rights reserved. +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// #import "OWSOutgoingSyncMessage.h" NS_ASSUME_NONNULL_BEGIN +@class YapDatabaseReadTransaction; + @interface OWSSyncGroupsMessage : OWSOutgoingSyncMessage -- (NSData *)buildPlainTextAttachmentData; +- (NSData *)buildPlainTextAttachmentDataWithTransaction:(YapDatabaseReadTransaction *)transaction; @end diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.m b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.m index 575f3d9eb..9e5a719c0 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.m +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.m @@ -40,7 +40,7 @@ NS_ASSUME_NONNULL_BEGIN return syncMessageBuilder; } -- (NSData *)buildPlainTextAttachmentData +- (NSData *)buildPlainTextAttachmentDataWithTransaction:(YapDatabaseReadTransaction *)transaction { // TODO use temp file stream to avoid loading everything into memory at once // First though, we need to re-engineer our attachment process to accept streams (encrypting with stream, diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 4b146b86b..5eb9e024b 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -615,8 +615,8 @@ NS_ASSUME_NONNULL_BEGIN }]; } else if (syncMessage.request.type == OWSSignalServiceProtosSyncMessageRequestTypeGroups) { OWSSyncGroupsMessage *syncGroupsMessage = [[OWSSyncGroupsMessage alloc] init]; - DataSource *dataSource = - [DataSourceValue dataSourceWithSyncMessage:[syncGroupsMessage buildPlainTextAttachmentData]]; + DataSource *dataSource = [DataSourceValue + dataSourceWithSyncMessage:[syncGroupsMessage buildPlainTextAttachmentDataWithTransaction:transaction]]; [self.messageSender sendTemporaryAttachmentData:dataSource contentType:OWSMimeTypeApplicationOctetStream inMessage:syncGroupsMessage