From 9904443fcfe1016b35d8539489c764deacff65b0 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 23 Jul 2018 09:30:04 -0400 Subject: [PATCH] Fix concurrency in contacts updater. --- .../src/Contacts/ContactsUpdater.m | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/SignalServiceKit/src/Contacts/ContactsUpdater.m b/SignalServiceKit/src/Contacts/ContactsUpdater.m index 22a65c45a..002f97cf6 100644 --- a/SignalServiceKit/src/Contacts/ContactsUpdater.m +++ b/SignalServiceKit/src/Contacts/ContactsUpdater.m @@ -53,19 +53,27 @@ NS_ASSUME_NONNULL_BEGIN { if (identifiers.count < 1) { OWSFail(@"%@ Cannot lookup zero identifiers", self.logTag); - failure(OWSErrorWithCodeDescription(OWSErrorCodeInvalidMethodParameters, @"Cannot lookup zero identifiers")); + dispatch_async(dispatch_get_main_queue(), ^{ + failure( + OWSErrorWithCodeDescription(OWSErrorCodeInvalidMethodParameters, @"Cannot lookup zero identifiers")); + }); return; } [self contactIntersectionWithSet:[NSSet setWithArray:identifiers] - success:^(NSSet *recipients) { - if (recipients.count == 0) { - DDLogInfo( - @"%@ in %s no contacts are Signal users", self.logTag, __PRETTY_FUNCTION__); - } - success(recipients.allObjects); - } - failure:failure]; + success:^(NSSet *recipients) { + if (recipients.count == 0) { + DDLogInfo(@"%@ in %s no contacts are Signal users", self.logTag, __PRETTY_FUNCTION__); + } + dispatch_async(dispatch_get_main_queue(), ^{ + success(recipients.allObjects); + }); + } + failure:^(NSError *error) { + dispatch_async(dispatch_get_main_queue(), ^{ + failure(error); + }); + }]; } - (void)contactIntersectionWithSet:(NSSet *)recipientIdsToLookup