From 239dffa391a8c7b59b6e3648007f481d498d07f4 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 29 Dec 2016 14:35:06 -0500 Subject: [PATCH] (fix) handle URI in vCard photos (fixes #2683) --- SoObjects/Contacts/SOGoContactEntryPhoto.m | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/SoObjects/Contacts/SOGoContactEntryPhoto.m b/SoObjects/Contacts/SOGoContactEntryPhoto.m index 078257c05..df3f9b2d8 100644 --- a/SoObjects/Contacts/SOGoContactEntryPhoto.m +++ b/SoObjects/Contacts/SOGoContactEntryPhoto.m @@ -40,25 +40,34 @@ - (id) GETAction: (WOContext *) localContext { NGVCardPhoto *photo; - NSData *data; + NSString *uri; + NSData *data; id response; photo = [self photo]; + data = nil; + uri = nil; + if ([photo isInline]) data = [photo decodedContent]; - else - data = [[photo flattenedValuesForKey: @""] - dataUsingEncoding: NSISOLatin1StringEncoding]; + else if ([[photo value: 0 ofAttribute: @"value"] isEqualToString: @"uri"]) + uri = [photo flattenedValuesForKey: @""]; + if (data) { response = [localContext response]; - [response setHeader: [self davContentType] forKey: @"content-type"]; [response setHeader: [NSString stringWithFormat:@" %d", (int)[data length]] forKey: @"content-length"]; [response setContent: data]; } + else if (uri) + { + response = [localContext response]; + [response setStatus: 302]; + [response setHeader: uri forKey: @"location"]; + } else response = nil;