diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index d0c0e37e35..53c359a675 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1056,12 +1056,20 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; for (NSDictionary *deviceMessage in deviceMessages) { NSNumber *_Nullable messageType = deviceMessage[@"type"]; OWSAssertDebug(messageType); + BOOL hasValidMessageType; if (messageSend.isUDSend) { - OWSAssertDebug([messageType isEqualToNumber:@(TSUnidentifiedSenderMessageType)]); + hasValidMessageType = [messageType isEqualToNumber:@(TSUnidentifiedSenderMessageType)]; } else { - OWSAssertDebug([messageType isEqualToNumber:@(TSEncryptedWhisperMessageType)] || + hasValidMessageType = ([messageType isEqualToNumber:@(TSEncryptedWhisperMessageType)] || [messageType isEqualToNumber:@(TSPreKeyWhisperMessageType)]); } + + if (!hasValidMessageType) { + OWSFailDebug(@"Invalid message type: %@", messageType); + NSError *error = OWSErrorMakeFailedToSendOutgoingMessageError(); + [error setIsRetryable:NO]; + return messageSend.failure(error); + } } if (deviceMessages.count == 0) {