From 0a285eedec327c8ea7f285f228c6083bcf5438d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Vall=C3=A9s?= Date: Wed, 6 May 2015 16:22:06 +0200 Subject: [PATCH] oc-calendar: Fix property values of invitation responses The value of `PidTagResponseRequested` property in the invitation mail wasn't being set properly, while the `PidTagReplyRequested` property wasn't being set at all. This caused invitation response mails not to be sent. Both properties are expected to be `true`. --- OpenChange/MAPIStoreMailMessage.h | 1 + OpenChange/MAPIStoreMailMessage.m | 32 +++++++++++++++---------------- 2 files changed, 16 insertions(+), 17 deletions(-) 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 {