|  |  | @ -192,7 +192,6 @@ NSUInteger const OWSSendMessageOperationMaxRetries = 4; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         [message updateWithMessageState:TSOutgoingMessageStateSentToService]; |  |  |  |         [message updateWithMessageState:TSOutgoingMessageStateSentToService]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         DDLogDebug(@"%@ succeeded.", strongSelf.tag); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         aSuccessHandler(); |  |  |  |         aSuccessHandler(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         [strongSelf markAsComplete]; |  |  |  |         [strongSelf markAsComplete]; | 
			
		
	
	
		
		
			
				
					|  |  | @ -281,12 +280,10 @@ NSUInteger const OWSSendMessageOperationMaxRetries = 4; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | - (void)tryWithRemainingRetries:(NSUInteger)remainingRetries |  |  |  | - (void)tryWithRemainingRetries:(NSUInteger)remainingRetries | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     DDLogDebug(@"%@ remainingRetries: %lu", self.tag, (unsigned long)remainingRetries); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     // Use this flag to ensure a given operation only succeeds or fails once. |  |  |  |     // Use this flag to ensure a given operation only succeeds or fails once. | 
			
		
	
		
		
			
				
					
					|  |  |  |     __block BOOL onceFlag = NO; |  |  |  |     __block BOOL onceFlag = NO; | 
			
		
	
		
		
			
				
					
					|  |  |  |     RetryableFailureHandler retryableFailureHandler = ^(NSError *_Nonnull error) { |  |  |  |     RetryableFailureHandler retryableFailureHandler = ^(NSError *_Nonnull error) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         DDLogInfo(@"%@ Sending failed.", self.tag); |  |  |  |         DDLogInfo(@"%@ Sending failed. Remaining retries: %lu", self.tag, (unsigned long)remainingRetries); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         OWSAssert(!onceFlag); |  |  |  |         OWSAssert(!onceFlag); | 
			
		
	
		
		
			
				
					
					|  |  |  |         onceFlag = YES; |  |  |  |         onceFlag = YES; | 
			
		
	
	
		
		
			
				
					|  |  | @ -450,8 +447,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; | 
			
		
	
		
		
			
				
					
					|  |  |  |                      success:(void (^)())successHandler |  |  |  |                      success:(void (^)())successHandler | 
			
		
	
		
		
			
				
					
					|  |  |  |                      failure:(RetryableFailureHandler)failureHandler |  |  |  |                      failure:(RetryableFailureHandler)failureHandler | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     DDLogDebug(@"%@ sending message: %@", self.tag, message.debugDescription); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     [self ensureAnyAttachmentsUploaded:message |  |  |  |     [self ensureAnyAttachmentsUploaded:message | 
			
		
	
		
		
			
				
					
					|  |  |  |         success:^() { |  |  |  |         success:^() { | 
			
		
	
		
		
			
				
					
					|  |  |  |             [self deliverMessage:message |  |  |  |             [self deliverMessage:message | 
			
		
	
	
		
		
			
				
					|  |  | @ -472,7 +467,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; | 
			
		
	
		
		
			
				
					
					|  |  |  |                              failure:(RetryableFailureHandler)failureHandler |  |  |  |                              failure:(RetryableFailureHandler)failureHandler | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (!message.hasAttachments) { |  |  |  |     if (!message.hasAttachments) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         DDLogDebug(@"%@ No attachments for message: %@", self.tag, message); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         return successHandler(); |  |  |  |         return successHandler(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -1169,7 +1163,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; | 
			
		
	
		
		
			
				
					
					|  |  |  |     NSMutableArray *messagesArray = [NSMutableArray arrayWithCapacity:recipient.devices.count]; |  |  |  |     NSMutableArray *messagesArray = [NSMutableArray arrayWithCapacity:recipient.devices.count]; | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  |      | 
			
		
	
		
		
			
				
					
					|  |  |  |     NSData *plainText = [message buildPlainTextData]; |  |  |  |     NSData *plainText = [message buildPlainTextData]; | 
			
		
	
		
		
			
				
					
					|  |  |  |     DDLogDebug(@"%@ message: %@ plainTextData.length: %lu", self.tag, [message class], plainText.length); |  |  |  |     DDLogDebug(@"%@ built message: %@ plainTextData.length: %lu", self.tag, [message class], plainText.length); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     for (NSNumber *deviceNumber in recipient.devices) { |  |  |  |     for (NSNumber *deviceNumber in recipient.devices) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         @try { |  |  |  |         @try { | 
			
		
	
	
		
		
			
				
					|  |  | 
 |