[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-4' - 2 commits - ios/Mobile
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Fri Apr 26 08:45:22 UTC 2019
ios/Mobile/AppDelegate.mm | 96 ++++++++++++++++++++++++++++++----------------
1 file changed, 63 insertions(+), 33 deletions(-)
New commits:
commit 2b8a06523df5283c07402910052e1558e79909bf
Author: Tor Lillqvist <tml at collabora.com>
AuthorDate: Fri Apr 26 11:44:28 2019 +0300
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Apr 26 11:44:28 2019 +0300
tdf#124918: Don't crash on invalid URLs in the template list file
diff --git a/ios/Mobile/AppDelegate.mm b/ios/Mobile/AppDelegate.mm
index a92fcf782..a2722da89 100644
--- a/ios/Mobile/AppDelegate.mm
+++ b/ios/Mobile/AppDelegate.mm
@@ -102,51 +102,55 @@ static void updateTemplates(NSData *data, NSURLResponse *response)
NSString *line = [NSString stringWithUTF8String:buf.data()];
NSURL *url = [NSURL URLWithString:line];
- NSString *baseName = [url lastPathComponent];
-
- NSString *hash = [[NSData dataWithBytes:buf.data() length:length] base64EncodedStringWithOptions:0];
- [urlHashes addObject:hash];
-
- NSString *directoryForTemplate = [downloadedTemplates stringByAppendingString:hash];
-
- NSURL *fileForTemplate = [NSURL fileURLWithPath:[directoryForTemplate stringByAppendingString:[@"/" stringByAppendingString:baseName]]];
-
- // If we have that template, check whether it is up-to-date
- BOOL isDirectory;
- if ([[NSFileManager defaultManager] fileExistsAtPath:directoryForTemplate isDirectory:&isDirectory] &&
- isDirectory) {
- NSMutableURLRequest *req = [[NSURLRequest requestWithURL:url] mutableCopy];
- [req setHTTPMethod:@"HEAD"];
- [[[NSURLSession sharedSession] dataTaskWithRequest:req
- completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
- if (error == nil && [response isKindOfClass:[NSHTTPURLResponse class]] && [(NSHTTPURLResponse*)response statusCode] == 200) {
- NSString *lastModified = [[(NSHTTPURLResponse*)response allHeaderFields] objectForKey:@"Last-Modified"];
- NSDateFormatter *df = [[NSDateFormatter alloc] init];
- df.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss z";
- NSDate *templateDate = [df dateFromString:lastModified];
-
- NSDate *cachedTemplateDate = [[[NSFileManager defaultManager] attributesOfItemAtPath:[fileForTemplate path] error:nil] objectForKey:NSFileModificationDate];
-
- if ([templateDate compare:cachedTemplateDate] == NSOrderedDescending) {
- downloadTemplate(url, fileForTemplate);
+ if (url == nil)
+ LOG_ERR("Invalid URL in template file: " << [line UTF8String]);
+ else {
+ NSString *baseName = [url lastPathComponent];
+
+ NSString *hash = [[NSData dataWithBytes:buf.data() length:length] base64EncodedStringWithOptions:0];
+ [urlHashes addObject:hash];
+
+ NSString *directoryForTemplate = [downloadedTemplates stringByAppendingString:hash];
+
+ NSURL *fileForTemplate = [NSURL fileURLWithPath:[directoryForTemplate stringByAppendingString:[@"/" stringByAppendingString:baseName]]];
+
+ // If we have that template, check whether it is up-to-date
+ BOOL isDirectory;
+ if ([[NSFileManager defaultManager] fileExistsAtPath:directoryForTemplate isDirectory:&isDirectory] &&
+ isDirectory) {
+ NSMutableURLRequest *req = [[NSURLRequest requestWithURL:url] mutableCopy];
+ [req setHTTPMethod:@"HEAD"];
+ [[[NSURLSession sharedSession] dataTaskWithRequest:req
+ completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
+ if (error == nil && [response isKindOfClass:[NSHTTPURLResponse class]] && [(NSHTTPURLResponse*)response statusCode] == 200) {
+ NSString *lastModified = [[(NSHTTPURLResponse*)response allHeaderFields] objectForKey:@"Last-Modified"];
+ NSDateFormatter *df = [[NSDateFormatter alloc] init];
+ df.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss z";
+ NSDate *templateDate = [df dateFromString:lastModified];
+
+ NSDate *cachedTemplateDate = [[[NSFileManager defaultManager] attributesOfItemAtPath:[fileForTemplate path] error:nil] objectForKey:NSFileModificationDate];
+
+ if ([templateDate compare:cachedTemplateDate] == NSOrderedDescending) {
+ downloadTemplate(url, fileForTemplate);
+ }
+ } else if (error == nil && [response isKindOfClass:[NSHTTPURLResponse class]]) {
+ LOG_ERR("Failed to get HEAD of " <<
+ [[url absoluteString] UTF8String] <<
+ ": response code " << [(NSHTTPURLResponse*)response statusCode]);
+ } else if (error != nil) {
+ LOG_ERR("Failed to get HEAD of " <<
+ [[url absoluteString] UTF8String] <<
+ ": " << [[error description] UTF8String]);
+ } else {
+ LOG_ERR("Failed to get HEAD of " <<
+ [[url absoluteString] UTF8String]);
}
- } else if (error == nil && [response isKindOfClass:[NSHTTPURLResponse class]]) {
- LOG_ERR("Failed to get HEAD of " <<
- [[url absoluteString] UTF8String] <<
- ": response code " << [(NSHTTPURLResponse*)response statusCode]);
- } else if (error != nil) {
- LOG_ERR("Failed to get HEAD of " <<
- [[url absoluteString] UTF8String] <<
- ": " << [[error description] UTF8String]);
- } else {
- LOG_ERR("Failed to get HEAD of " <<
- [[url absoluteString] UTF8String]);
- }
- }] resume];
- } else {
- // Else download it.
- [[NSFileManager defaultManager] createDirectoryAtPath:directoryForTemplate withIntermediateDirectories:YES attributes:nil error:nil];
- downloadTemplate(url, fileForTemplate);
+ }] resume];
+ } else {
+ // Else download it.
+ [[NSFileManager defaultManager] createDirectoryAtPath:directoryForTemplate withIntermediateDirectories:YES attributes:nil error:nil];
+ downloadTemplate(url, fileForTemplate);
+ }
}
}
}
commit 4d519aebc03d9a8a88ba1886236ed3b65f67bacf
Author: Tor Lillqvist <tml at collabora.com>
AuthorDate: Fri Apr 26 11:28:39 2019 +0300
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Apr 26 11:28:39 2019 +0300
tdf#124918: More logging in template download error situations
diff --git a/ios/Mobile/AppDelegate.mm b/ios/Mobile/AppDelegate.mm
index aa9737cae..a92fcf782 100644
--- a/ios/Mobile/AppDelegate.mm
+++ b/ios/Mobile/AppDelegate.mm
@@ -49,6 +49,10 @@ static void download(NSURL *source, NSURL *destination) {
" with " << [[location absoluteString] UTF8String] <<
": " << [[error description] UTF8String]);
}
+ } else if (error == nil && [response isKindOfClass:[NSHTTPURLResponse class]]) {
+ LOG_ERR("Failed to download " <<
+ [[source absoluteString] UTF8String] <<
+ ": response code " << [(NSHTTPURLResponse*)response statusCode]);
} else if (error != nil) {
LOG_ERR("Failed to download " <<
[[source absoluteString] UTF8String] <<
@@ -126,6 +130,17 @@ static void updateTemplates(NSData *data, NSURLResponse *response)
if ([templateDate compare:cachedTemplateDate] == NSOrderedDescending) {
downloadTemplate(url, fileForTemplate);
}
+ } else if (error == nil && [response isKindOfClass:[NSHTTPURLResponse class]]) {
+ LOG_ERR("Failed to get HEAD of " <<
+ [[url absoluteString] UTF8String] <<
+ ": response code " << [(NSHTTPURLResponse*)response statusCode]);
+ } else if (error != nil) {
+ LOG_ERR("Failed to get HEAD of " <<
+ [[url absoluteString] UTF8String] <<
+ ": " << [[error description] UTF8String]);
+ } else {
+ LOG_ERR("Failed to get HEAD of " <<
+ [[url absoluteString] UTF8String]);
}
}] resume];
} else {
@@ -182,6 +197,17 @@ static void updateTemplates(NSData *data, NSURLResponse *response)
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error == nil && [response isKindOfClass:[NSHTTPURLResponse class]] && [(NSHTTPURLResponse*)response statusCode] == 200)
updateTemplates(data, response);
+ else if (error == nil && [response isKindOfClass:[NSHTTPURLResponse class]])
+ LOG_ERR("Failed to download " <<
+ [[url absoluteString] UTF8String] <<
+ ": response code " << [(NSHTTPURLResponse*)response statusCode]);
+ else if (error != nil)
+ LOG_ERR("Failed to download " <<
+ [[url absoluteString] UTF8String] <<
+ ": " << [[error description] UTF8String]);
+ else
+ LOG_ERR("Failed to download " <<
+ [[url absoluteString] UTF8String]);
}] resume];
}
}
More information about the Libreoffice-commits
mailing list