From d6af5028ca5948da361c31bf007bdf525a8edadb Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Fri, 17 Mar 2017 16:49:56 -0400 Subject: [PATCH] Fix receiving attachments from old clients Protobuf's null-object pattern provides an empty NSData when no digest is provided rather than nil. // FREEBIE --- src/Messages/Attachments/OWSAttachmentsProcessor.m | 10 +++++++++- src/Messages/Attachments/TSAttachmentPointer.h | 2 +- src/Messages/Attachments/TSAttachmentPointer.m | 3 +-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Messages/Attachments/OWSAttachmentsProcessor.m b/src/Messages/Attachments/OWSAttachmentsProcessor.m index 3683e78d4..2d59730df 100644 --- a/src/Messages/Attachments/OWSAttachmentsProcessor.m +++ b/src/Messages/Attachments/OWSAttachmentsProcessor.m @@ -63,9 +63,17 @@ NS_ASSUME_NONNULL_BEGIN NSMutableArray *supportedAttachmentIds = [NSMutableArray new]; for (OWSSignalServiceProtosAttachmentPointer *attachmentProto in attachmentProtos) { + + OWSAssert(attachmentProto.id != 0); + OWSAssert(attachmentProto.key != nil); + OWSAssert(attachmentProto.contentType != nil); + + // digest will be empty for old clients. + NSData *digest = attachmentProto.hasDigest ? attachmentProto.digest : nil; + TSAttachmentPointer *pointer = [[TSAttachmentPointer alloc] initWithServerId:attachmentProto.id key:attachmentProto.key - digest:attachmentProto.digest + digest:digest contentType:attachmentProto.contentType relay:relay]; diff --git a/src/Messages/Attachments/TSAttachmentPointer.h b/src/Messages/Attachments/TSAttachmentPointer.h index a96aef9fb..a6a825b5c 100644 --- a/src/Messages/Attachments/TSAttachmentPointer.h +++ b/src/Messages/Attachments/TSAttachmentPointer.h @@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithServerId:(UInt64)serverId key:(NSData *)key - digest:(NSData *)digest + digest:(nullable NSData *)digest contentType:(NSString *)contentType relay:(NSString *)relay NS_DESIGNATED_INITIALIZER; diff --git a/src/Messages/Attachments/TSAttachmentPointer.m b/src/Messages/Attachments/TSAttachmentPointer.m index 0010c79c8..40a930830 100644 --- a/src/Messages/Attachments/TSAttachmentPointer.m +++ b/src/Messages/Attachments/TSAttachmentPointer.m @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithServerId:(UInt64)serverId key:(NSData *)key - digest:(NSData *)digest + digest:(nullable NSData *)digest contentType:(NSString *)contentType relay:(NSString *)relay { @@ -19,7 +19,6 @@ NS_ASSUME_NONNULL_BEGIN return self; } - OWSAssert(digest != nil); _digest = digest; _failed = NO; _downloading = NO;