diff --git a/OpenChange/MAPIStoreMailMessage.h b/OpenChange/MAPIStoreMailMessage.h index fffd0c422..60922feaf 100644 --- a/OpenChange/MAPIStoreMailMessage.h +++ b/OpenChange/MAPIStoreMailMessage.h @@ -35,6 +35,7 @@ { BOOL headerSetup; BOOL mailIsEvent; + BOOL mailIsMeetingRequest; BOOL mailIsSharingObject; NSString *mimeKey; NSString *headerCharset; diff --git a/OpenChange/MAPIStoreMailMessage.m b/OpenChange/MAPIStoreMailMessage.m index 9d7342272..77ab5be40 100644 --- a/OpenChange/MAPIStoreMailMessage.m +++ b/OpenChange/MAPIStoreMailMessage.m @@ -118,6 +118,7 @@ static Class NSExceptionK, MAPIStoreSharingMessageK; { mimeKey = nil; mailIsEvent = NO; + mailIsMeetingRequest = NO; mailIsSharingObject = NO; headerCharset = nil; headerEncoding = nil; @@ -258,7 +259,11 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) ASSIGN (headerCharset, [parameters objectForKey: @"charset"]); if ([headerMimeType isEqualToString: @"text/calendar"] || [headerMimeType isEqualToString: @"application/ics"]) + { mailIsEvent = YES; + if ([[parameters objectForKey: @"method"] isEqualToString: @"REQUEST"]) + mailIsMeetingRequest = YES; + } else { sharingHeader = [[sogoObject mailHeaders] objectForKey: @"x-ms-sharing-localtype"]; @@ -572,30 +577,23 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -/* Note: this applies to regular mails... */ -// - (int) getPidTagReplyRequested: (void **) data // TODO -// inMemCtx: (TALLOC_CTX *) memCtx -// { -// if (!headerSetup) -// [self _fetchHeaderData]; - -// return (mailIsEvent -// ? [self getYes: data inMemCtx: memCtx] -// : [self getNo: data inMemCtx: memCtx]); -// } - -/* ... while this applies to invitations. */ -- (int) getPidTagResponseRequested: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagReplyRequested: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { if (!headerSetup) [self _fetchHeaderData]; - return (mailIsEvent - ? [self getNo: data inMemCtx: memCtx] + return (mailIsMeetingRequest + ? [self getYes: data inMemCtx: memCtx] : MAPISTORE_ERR_NOT_FOUND); } +- (int) getPidTagResponseRequested: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagReplyRequested: data inMemCtx: memCtx]; +} + - (int) getPidTagLatestDeliveryTime: (void **) data // DOUBT inMemCtx: (TALLOC_CTX *) memCtx {