Fix pre key bundle handling bug

pull/63/head
Niels Andriesse 6 years ago
parent b97866243c
commit a8d9604613

@ -34,7 +34,7 @@
[addressMessageBuilder setPtpPort:portAsUInt32]; [addressMessageBuilder setPtpPort:portAsUInt32];
NSError *error; NSError *error;
SSKProtoLokiAddressMessage *addressMessage = [addressMessageBuilder buildAndReturnError:&error]; SSKProtoLokiAddressMessage *addressMessage = [addressMessageBuilder buildAndReturnError:&error];
if (error || !addressMessage) { if (error || addressMessage == nil) {
OWSFailDebug(@"Failed to build Loki address message for: %@ due to error: %@.", recipient.recipientId, error); OWSFailDebug(@"Failed to build Loki address message for: %@ due to error: %@.", recipient.recipientId, error);
return nil; return nil;
} else { } else {

@ -33,22 +33,18 @@
#pragma mark Building #pragma mark Building
- (SSKProtoContentBuilder *)prepareCustomContentBuilder:(SignalRecipient *)recipient { - (SSKProtoContentBuilder *)prepareCustomContentBuilder:(SignalRecipient *)recipient {
SSKProtoContentBuilder *contentBuilder = SSKProtoContent.builder; SSKProtoContentBuilder *contentBuilder = SSKProtoContent.builder;
// If this is a request then we should attach a pre key bundle NSError *error;
if (self.kind == LKDeviceLinkMessageKindRequest) { // Build the pre key bundle message
PreKeyBundle *bundle = [OWSPrimaryStorage.sharedManager generatePreKeyBundleForContact:recipient.recipientId]; PreKeyBundle *preKeyBundle = [OWSPrimaryStorage.sharedManager generatePreKeyBundleForContact:recipient.recipientId];
SSKProtoPrekeyBundleMessageBuilder *preKeyBuilder = [SSKProtoPrekeyBundleMessage builderFromPreKeyBundle:bundle]; SSKProtoPrekeyBundleMessageBuilder *preKeyBundleMessageBuilder = [SSKProtoPrekeyBundleMessage builderFromPreKeyBundle:preKeyBundle];
// Build the pre key bundle message SSKProtoPrekeyBundleMessage *preKeyBundleMessage = [preKeyBundleMessageBuilder buildAndReturnError:&error];
NSError *error; if (error || preKeyBundleMessage == nil) {
SSKProtoPrekeyBundleMessage *message = [preKeyBuilder buildAndReturnError:&error]; OWSFailDebug(@"Failed to build pre key bundle message for: %@ due to error: %@.", recipient.recipientId, error);
if (error || !message) { return nil;
OWSFailDebug(@"Failed to build pre key bundle for: %@ due to error: %@.", recipient.recipientId, error); } else {
return nil; [contentBuilder setPrekeyBundleMessage:preKeyBundleMessage];
} else {
[contentBuilder setPrekeyBundleMessage:message];
}
} }
// Build the device link message // Build the device link message
NSError *error;
SSKProtoLokiDeviceLinkMessageBuilder *deviceLinkMessageBuilder = [SSKProtoLokiDeviceLinkMessage builder]; SSKProtoLokiDeviceLinkMessageBuilder *deviceLinkMessageBuilder = [SSKProtoLokiDeviceLinkMessage builder];
[deviceLinkMessageBuilder setMasterHexEncodedPublicKey:self.masterHexEncodedPublicKey]; [deviceLinkMessageBuilder setMasterHexEncodedPublicKey:self.masterHexEncodedPublicKey];
[deviceLinkMessageBuilder setSlaveHexEncodedPublicKey:self.slaveHexEncodedPublicKey]; [deviceLinkMessageBuilder setSlaveHexEncodedPublicKey:self.slaveHexEncodedPublicKey];

@ -9,15 +9,15 @@
#pragma mark Initialization #pragma mark Initialization
- (SSKProtoContentBuilder *)prepareCustomContentBuilder:(SignalRecipient *)recipient { - (SSKProtoContentBuilder *)prepareCustomContentBuilder:(SignalRecipient *)recipient {
SSKProtoContentBuilder *contentBuilder = SSKProtoContent.builder; SSKProtoContentBuilder *contentBuilder = SSKProtoContent.builder;
PreKeyBundle *bundle = [OWSPrimaryStorage.sharedManager generatePreKeyBundleForContact:recipient.recipientId]; PreKeyBundle *preKeyBundle = [OWSPrimaryStorage.sharedManager generatePreKeyBundleForContact:recipient.recipientId];
SSKProtoPrekeyBundleMessageBuilder *preKeyBuilder = [SSKProtoPrekeyBundleMessage builderFromPreKeyBundle:bundle]; SSKProtoPrekeyBundleMessageBuilder *preKeyBundleMessageBuilder = [SSKProtoPrekeyBundleMessage builderFromPreKeyBundle:preKeyBundle];
NSError *error; NSError *error;
SSKProtoPrekeyBundleMessage *_Nullable message = [preKeyBuilder buildAndReturnError:&error]; SSKProtoPrekeyBundleMessage *preKeyBundleMessage = [preKeyBundleMessageBuilder buildAndReturnError:&error];
if (error || !message) { if (error || preKeyBundleMessage == nil) {
OWSFailDebug(@"Failed to build pre key bundle for: %@ due to error: %@.", recipient.recipientId, error); OWSFailDebug(@"Failed to build pre key bundle message for: %@ due to error: %@.", recipient.recipientId, error);
return nil; return nil;
} else { } else {
[contentBuilder setPrekeyBundleMessage:message]; [contentBuilder setPrekeyBundleMessage:preKeyBundleMessage];
} }
return contentBuilder; return contentBuilder;
} }

Loading…
Cancel
Save