diff --git a/ActiveSync/NSString+ActiveSync.h b/ActiveSync/NSString+ActiveSync.h index 4aad558a2..963b3d00a 100644 --- a/ActiveSync/NSString+ActiveSync.h +++ b/ActiveSync/NSString+ActiveSync.h @@ -1,6 +1,6 @@ /* -Copyright (c) 2014, Inverse inc. +Copyright (c) 2014-2015, Inverse inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -51,6 +51,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - (NSString *) command; - (NSString *) collectionid; - (NSString *) itemid; +- (BOOL) acceptsMultiPart; - (NSData *) convertHexStringToBytes; @end diff --git a/ActiveSync/NSString+ActiveSync.m b/ActiveSync/NSString+ActiveSync.m index 6aa054d10..a66f38252 100644 --- a/ActiveSync/NSString+ActiveSync.m +++ b/ActiveSync/NSString+ActiveSync.m @@ -322,6 +322,18 @@ static NSArray *easCommandParameters = nil; return s; } +- (BOOL) acceptsMultiPart +{ + NSString *s; + + s = [self _valueForParameter: @"OPTIONS="]; + + if (s && [s rangeOfString: @"AcceptMultiPart" options: NSCaseInsensitiveSearch].location != NSNotFound) + return YES; + + return NO; +} + // // FIXME: combine with our OpenChange code. diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index fc73a7b5e..622bdddf0 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -2630,7 +2630,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. aSelector = NSSelectorFromString(cmdName); // The -processItemOperations: method will generate a multipart response when Content-Type is application/vnd.ms-sync.multipart - if ([[theRequest headerForKey: @"MS-ASAcceptMultiPart"] isEqualToString:@"T"]) + if (([cmdName rangeOfString: @"ItemOperations" options: NSCaseInsensitiveSearch].location != NSNotFound) && + ([[theRequest headerForKey: @"MS-ASAcceptMultiPart"] isEqualToString:@"T"] || [[theRequest uri] acceptsMultiPart])) [theResponse setHeader: @"application/vnd.ms-sync.multipart" forKey: @"Content-Type"]; else [theResponse setHeader: @"application/vnd.ms-sync.wbxml" forKey: @"Content-Type"]; diff --git a/NEWS b/NEWS index df8209afb..38ab54e89 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,13 @@ -2.2.17a (2014-03-15) +2.2.18 (2015-04-XX) +------------------- + +Enhancements + - improved multipart handling using EAS + +Bug fixes + - + +2.2.17a (2015-03-15) -------------------- Bug fixes