Merge branch 'charlesmchen/udVsLinkedDevices2'

pull/1/head
Matthew Chen 7 years ago
commit 196542fd95

@ -162,12 +162,19 @@ public class ProfileFetcherJob: NSObject {
} }
private func updateUnidentifiedAccess(recipientId: String, verifier: Data?, hasUnrestrictedAccess: Bool) { private func updateUnidentifiedAccess(recipientId: String, verifier: Data?, hasUnrestrictedAccess: Bool) {
guard let verifier = verifier else {
// If there is no verifier, at least one of this user's devices
// do not support UD.
udManager.setUnidentifiedAccessMode(.disabled, recipientId: recipientId)
return
}
if hasUnrestrictedAccess { if hasUnrestrictedAccess {
udManager.setUnidentifiedAccessMode(.unrestricted, recipientId: recipientId) udManager.setUnidentifiedAccessMode(.unrestricted, recipientId: recipientId)
return return
} }
guard let verifier = verifier, let udAccessKey = udManager.rawUDAccessKeyForRecipient(recipientId) else { guard let udAccessKey = udManager.rawUDAccessKeyForRecipient(recipientId) else {
udManager.setUnidentifiedAccessMode(.disabled, recipientId: recipientId) udManager.setUnidentifiedAccessMode(.disabled, recipientId: recipientId)
return return
} }

@ -1036,6 +1036,8 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
OWSLogWarn(@"Sending a message with no device messages."); OWSLogWarn(@"Sending a message with no device messages.");
} }
OWSLogVerbose(@"Sending message; ud? %d %d.", messageSend.isUDSend, messageSend.unidentifiedAccess != nil);
// NOTE: canFailoverUDAuth is NO because UD-auth and Non-UD-auth requests // NOTE: canFailoverUDAuth is NO because UD-auth and Non-UD-auth requests
// use different device lists. // use different device lists.
OWSRequestMaker *requestMaker = [[OWSRequestMaker alloc] OWSRequestMaker *requestMaker = [[OWSRequestMaker alloc]
@ -1359,13 +1361,17 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
OWSLogDebug( OWSLogDebug(
@"built message: %@ plainTextData.length: %lu", [messageSend.message class], (unsigned long)plainText.length); @"built message: %@ plainTextData.length: %lu", [messageSend.message class], (unsigned long)plainText.length);
OWSLogDebug(@"recipient.devices: %@", recipient.devices); OWSLogVerbose(@"building device messages for: %@ %@ (isLocalNumber: %d, isUDSend: %d)",
[DDLog flushLog]; recipient.recipientId,
recipient.devices,
messageSend.isLocalNumber,
messageSend.isUDSend);
NSMutableArray<NSNumber *> *deviceIds = [recipient.devices mutableCopy]; NSMutableArray<NSNumber *> *deviceIds = [recipient.devices mutableCopy];
OWSAssertDebug(deviceIds); OWSAssertDebug(deviceIds);
if (messageSend.isUDSend && messageSend.isLocalNumber) { if (messageSend.isUDSend && messageSend.isLocalNumber) {
OWSLogVerbose(@"Adding device message for UD send to local device.");
OWSAssertDebug(![deviceIds containsObject:@(OWSDevicePrimaryDeviceId)]); OWSAssertDebug(![deviceIds containsObject:@(OWSDevicePrimaryDeviceId)]);
[deviceIds addObject:@(OWSDevicePrimaryDeviceId)]; [deviceIds addObject:@(OWSDevicePrimaryDeviceId)];

@ -172,6 +172,12 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager {
@objc @objc
public func setUnidentifiedAccessMode(_ mode: UnidentifiedAccessMode, recipientId: String) { public func setUnidentifiedAccessMode(_ mode: UnidentifiedAccessMode, recipientId: String) {
if let localNumber = tsAccountManager.localNumber() {
if recipientId == localNumber {
Logger.info("Setting local UD access mode: \(mode.rawValue)")
}
}
dbConnection.setObject(mode.rawValue as Int, forKey: recipientId, inCollection: kUnidentifiedAccessCollection) dbConnection.setObject(mode.rawValue as Int, forKey: recipientId, inCollection: kUnidentifiedAccessCollection)
} }

Loading…
Cancel
Save