Fix "413 on prekey fetch" errors.
This commit is contained in:
parent
e89d8b40d7
commit
3011175cef
|
@ -212,8 +212,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
__block NSMutableArray *result = [NSMutableArray array];
|
||||
|
||||
for (PhoneNumber *number in [self.parsedPhoneNumbers sortedArrayUsingSelector:@selector(compare:)]) {
|
||||
SignalRecipient *_Nullable signalRecipient =
|
||||
[SignalRecipient registeredRecipientForRecipientId:number.toE164 transaction:transaction];
|
||||
SignalRecipient *_Nullable signalRecipient = [SignalRecipient registeredRecipientForRecipientId:number.toE164
|
||||
mustHaveDevices:YES
|
||||
transaction:transaction];
|
||||
if (signalRecipient) {
|
||||
[result addObject:signalRecipient];
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
+ (nullable instancetype)registeredRecipientForRecipientId:(NSString *)recipientId
|
||||
mustHaveDevices:(BOOL)mustHaveDevices
|
||||
transaction:(YapDatabaseReadTransaction *)transaction;
|
||||
+ (instancetype)getOrBuildUnsavedRecipientForRecipientId:(NSString *)recipientId
|
||||
transaction:(YapDatabaseReadTransaction *)transaction;
|
||||
|
|
|
@ -41,8 +41,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
{
|
||||
OWSAssertDebug(transaction);
|
||||
OWSAssertDebug(recipientId.length > 0);
|
||||
|
||||
SignalRecipient *_Nullable recipient = [self registeredRecipientForRecipientId:recipientId transaction:transaction];
|
||||
|
||||
SignalRecipient *_Nullable recipient =
|
||||
[self registeredRecipientForRecipientId:recipientId mustHaveDevices:NO transaction:transaction];
|
||||
if (!recipient) {
|
||||
recipient = [[self alloc] initWithTextSecureIdentifier:recipientId];
|
||||
}
|
||||
|
@ -96,16 +97,17 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
|
||||
+ (nullable instancetype)registeredRecipientForRecipientId:(NSString *)recipientId
|
||||
mustHaveDevices:(BOOL)mustHaveDevices
|
||||
transaction:(YapDatabaseReadTransaction *)transaction
|
||||
{
|
||||
OWSAssertDebug(transaction);
|
||||
OWSAssertDebug(recipientId.length > 0);
|
||||
|
||||
SignalRecipient *_Nullable signalRecipient = [self fetchObjectWithUniqueID:recipientId transaction:transaction];
|
||||
if (signalRecipient.devices.count > 0) {
|
||||
return signalRecipient;
|
||||
if (mustHaveDevices && signalRecipient.devices.count < 1) {
|
||||
return nil;
|
||||
}
|
||||
return nil;
|
||||
return signalRecipient;
|
||||
}
|
||||
|
||||
- (void)addDevices:(NSSet *)devices
|
||||
|
@ -217,8 +219,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
+ (BOOL)isRegisteredRecipient:(NSString *)recipientId transaction:(YapDatabaseReadTransaction *)transaction
|
||||
{
|
||||
SignalRecipient *_Nullable instance = [self registeredRecipientForRecipientId:recipientId transaction:transaction];
|
||||
return instance.devices.count > 0;
|
||||
return nil != [self registeredRecipientForRecipientId:recipientId mustHaveDevices:YES transaction:transaction];
|
||||
}
|
||||
|
||||
+ (SignalRecipient *)markRecipientAsRegisteredAndGet:(NSString *)recipientId
|
||||
|
@ -227,7 +228,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
OWSAssertDebug(transaction);
|
||||
OWSAssertDebug(recipientId.length > 0);
|
||||
|
||||
SignalRecipient *_Nullable instance = [self registeredRecipientForRecipientId:recipientId transaction:transaction];
|
||||
SignalRecipient *_Nullable instance =
|
||||
[self registeredRecipientForRecipientId:recipientId mustHaveDevices:YES transaction:transaction];
|
||||
|
||||
if (!instance) {
|
||||
OWSLogDebug(@"creating recipient: %@", recipientId);
|
||||
|
@ -262,7 +264,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
SignalRecipient *instance = [self getOrBuildUnsavedRecipientForRecipientId:recipientId
|
||||
transaction:transaction];
|
||||
OWSLogDebug(@"Marking recipient as not registered: %@", recipientId);
|
||||
[instance removeDevices:instance.devices.set];
|
||||
if (instance.devices.count > 0) {
|
||||
[instance removeDevices:instance.devices.set];
|
||||
}
|
||||
[instance saveWithTransaction_internal:transaction];
|
||||
}
|
||||
|
||||
|
|
|
@ -1456,7 +1456,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
// Consult the device list cache we use for message sending
|
||||
// whether or not we know about this linked device.
|
||||
SignalRecipient *_Nullable recipient =
|
||||
[SignalRecipient registeredRecipientForRecipientId:localNumber transaction:transaction];
|
||||
[SignalRecipient registeredRecipientForRecipientId:localNumber mustHaveDevices:NO transaction:transaction];
|
||||
if (!recipient) {
|
||||
OWSFailDebug(@"No local SignalRecipient.");
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue