Retry failed attachment downloads

pull/250/head
nielsandriesse 5 years ago
parent 5e43d080c9
commit 1e3705978e

@ -378,6 +378,10 @@ typedef void (^AttachmentDownloadFailure)(NSError *error);
}); });
}; };
__block NSUInteger retryCount = 0;
NSUInteger maxRetryCount = 4;
__block void (^attempt)();
attempt = ^() {
dispatch_async([OWSDispatch attachmentsQueue], ^{ dispatch_async([OWSDispatch attachmentsQueue], ^{
[self downloadFromLocation:attachmentPointer.downloadURL [self downloadFromLocation:attachmentPointer.downloadURL
job:job job:job
@ -387,10 +391,17 @@ typedef void (^AttachmentDownloadFailure)(NSError *error);
success:markAndHandleSuccess success:markAndHandleSuccess
failure:markAndHandleFailure]; failure:markAndHandleFailure];
} }
failure:^(NSURLSessionTask *_Nullable task, NSError *error) { failure:^(NSURLSessionTask *task, NSError *error) {
if (retryCount == maxRetryCount) {
markAndHandleFailure(error); markAndHandleFailure(error);
} else {
retryCount += 1;
attempt();
}
}]; }];
}); });
};
attempt();
} }
- (void)decryptAttachmentPath:(NSString *)encryptedDataFilePath - (void)decryptAttachmentPath:(NSString *)encryptedDataFilePath
@ -630,6 +641,7 @@ typedef void (^AttachmentDownloadFailure)(NSError *error);
} }
successHandler(tempFilePath); successHandler(tempFilePath);
}]; }];
[task resume]; [task resume];
} }

Loading…
Cancel
Save