From e559b5a255ad4e9739e2ed98b6ea6b4ebb27170e Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 3 Jun 2011 23:39:54 +0000 Subject: [PATCH 1/6] Monotone-Parent: 3c56ca9ef63d29beeb411890d72b4047a46d7713 Monotone-Revision: 665f983476d1d561ba36710e816436e50f23fc19 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-06-03T23:39:54 Monotone-Branch: ca.inverse.sogo --- OpenChange/GNUmakefile | 1 + 1 file changed, 1 insertion(+) diff --git a/OpenChange/GNUmakefile b/OpenChange/GNUmakefile index d7b073764..c96f10110 100644 --- a/OpenChange/GNUmakefile +++ b/OpenChange/GNUmakefile @@ -92,6 +92,7 @@ $(SOGOBACKEND)_OBJC_FILES += \ \ MAPIStoreCommonViewsContext.m \ MAPIStoreDeferredActionsContext.m \ + MAPIStoreFallbackContext.m \ MAPIStoreFreebusyContext.m \ MAPIStoreJournalContext.m \ MAPIStoreRemindersContext.m \ From 86720911782e6ed750bb9a27201092184a6c9169 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 3 Jun 2011 23:45:42 +0000 Subject: [PATCH 2/6] Monotone-Parent: 665f983476d1d561ba36710e816436e50f23fc19 Monotone-Revision: c852be1d5a70f9aa1ee5a5b4e45b30bd3ef86939 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-06-03T23:45:42 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ OpenChange/GNUmakefile | 1 + OpenChange/MAPIStoreMailContext.h | 3 --- OpenChange/MAPIStoreMailContext.m | 9 --------- 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 20bbaff23..0038b6700 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-06-03 Wolfgang Sourdeau + + * OpenChange/MAPIStoreSpoolerContext.[hm]: new context module, + which subclasses MAPIStoreSpoolerContext from + MAPIStoreFSBaseContext rather than MAPIStoreOutboxContext. + 2011-05-31 Wolfgang Sourdeau * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue) diff --git a/OpenChange/GNUmakefile b/OpenChange/GNUmakefile index c96f10110..a0e7f4a19 100644 --- a/OpenChange/GNUmakefile +++ b/OpenChange/GNUmakefile @@ -99,6 +99,7 @@ $(SOGOBACKEND)_OBJC_FILES += \ MAPIStoreScheduleContext.m \ MAPIStoreSearchContext.m \ MAPIStoreShortcutsContext.m \ + MAPIStoreSpoolerContext.m \ MAPIStoreViewsContext.m \ \ NSArray+MAPIStore.m \ diff --git a/OpenChange/MAPIStoreMailContext.h b/OpenChange/MAPIStoreMailContext.h index 644fb7daf..e6fbf9643 100644 --- a/OpenChange/MAPIStoreMailContext.h +++ b/OpenChange/MAPIStoreMailContext.h @@ -43,7 +43,4 @@ @interface MAPIStoreOutboxContext : MAPIStoreMailContext @end -@interface MAPIStoreSpoolerContext : MAPIStoreOutboxContext -@end - #endif /* MAPISTOREMAILCONTEXT_H */ diff --git a/OpenChange/MAPIStoreMailContext.m b/OpenChange/MAPIStoreMailContext.m index 8c94c3015..0b9a47968 100644 --- a/OpenChange/MAPIStoreMailContext.m +++ b/OpenChange/MAPIStoreMailContext.m @@ -115,12 +115,3 @@ } @end - -@implementation MAPIStoreSpoolerContext - -+ (NSString *) MAPIModuleName -{ - return @"spooler-queue"; -} - -@end From 3b0b350ff30849eeacdb3fa463bb79bb2d27ac8f Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 3 Jun 2011 23:53:30 +0000 Subject: [PATCH 3/6] Monotone-Parent: c852be1d5a70f9aa1ee5a5b4e45b30bd3ef86939 Monotone-Revision: 1ed44d9759e8a5f57b9c55905872081bf8fec785 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-06-03T23:53:30 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 7 +++ OpenChange/MAPIStoreAttachment.m | 11 ++-- OpenChange/MAPIStoreContext.h | 3 + OpenChange/MAPIStoreContext.m | 25 ++++++--- OpenChange/MAPIStoreFolderTable.m | 8 --- OpenChange/MAPIStoreMapping.h | 5 +- OpenChange/MAPIStoreMapping.m | 90 +++++++++++++++--------------- OpenChange/MAPIStoreMessageTable.m | 8 --- 8 files changed, 80 insertions(+), 77 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0038b6700..fadb5dcaf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2011-06-03 Wolfgang Sourdeau + * OpenChange/MAPIStoreContext.m: MAPIStoreMapping instances are + now per-user instances rather than class singletons. + + * OpenChange/MAPIStoreMapping.m: now makes use of the records + already present in indexing.tdb for building the initial mapping + dictionary. + * OpenChange/MAPIStoreSpoolerContext.[hm]: new context module, which subclasses MAPIStoreSpoolerContext from MAPIStoreFSBaseContext rather than MAPIStoreOutboxContext. diff --git a/OpenChange/MAPIStoreAttachment.m b/OpenChange/MAPIStoreAttachment.m index fb2098896..571c2fe13 100644 --- a/OpenChange/MAPIStoreAttachment.m +++ b/OpenChange/MAPIStoreAttachment.m @@ -23,6 +23,7 @@ #import #import "MAPIStoreAttachment.h" +#import "MAPIStoreContext.h" #import "MAPIStoreMapping.h" #import "MAPIStoreMessage.h" #import "MAPIStoreTypes.h" @@ -33,15 +34,8 @@ #include #include -static MAPIStoreMapping *mapping; - @implementation MAPIStoreAttachment -+ (void) initialize -{ - mapping = [MAPIStoreMapping sharedMapping]; -} - - (void) setAID: (uint32_t) newAID { aid = newAID; @@ -102,9 +96,12 @@ static MAPIStoreMapping *mapping; andFlags: (enum OpenEmbeddedMessage_OpenModeFlags) flags { MAPIStoreAttachmentMessage *attMessage; + MAPIStoreMapping *mapping; memset (mapistoreMsg, 0, sizeof (struct mapistore_message)); + mapping = [[self context] mapping]; + attMessage = [self openEmbeddedMessage]; if (attMessage) *mid = [mapping idFromURL: [attMessage url]]; diff --git a/OpenChange/MAPIStoreContext.h b/OpenChange/MAPIStoreContext.h index 5c799e9fb..16616313f 100644 --- a/OpenChange/MAPIStoreContext.h +++ b/OpenChange/MAPIStoreContext.h @@ -53,6 +53,8 @@ NSURL *contextUrl; uint64_t contextFid; + MAPIStoreMapping *mapping; + MAPIStoreAuthenticator *authenticator; WOContext *woContext; @@ -79,6 +81,7 @@ - (struct mapistore_connection_info *) connectionInfo; - (WOContext *) woContext; +- (MAPIStoreMapping *) mapping; - (void) setupRequest; - (void) tearDownRequest; diff --git a/OpenChange/MAPIStoreContext.m b/OpenChange/MAPIStoreContext.m index a6d850a15..4dbd58198 100644 --- a/OpenChange/MAPIStoreContext.m +++ b/OpenChange/MAPIStoreContext.m @@ -70,8 +70,8 @@ static Class NSDataK, NSStringK, MAPIStoreFAIMessageK; -static MAPIStoreMapping *mapping; static NSMutableDictionary *contextClassMapping; +static NSMutableDictionary *userMAPIStoreMapping; static void *ldbCtx = NULL; @@ -86,8 +86,6 @@ static void *ldbCtx = NULL; NSStringK = [NSString class]; MAPIStoreFAIMessageK = [MAPIStoreFAIMessage class]; - mapping = [MAPIStoreMapping sharedMapping]; - contextClassMapping = [NSMutableDictionary new]; classes = GSObjCAllSubclassesOfClass (self); max = [classes count]; @@ -103,6 +101,8 @@ static void *ldbCtx = NULL; NSStringFromClass (currentClass), moduleName); } } + + userMAPIStoreMapping = [NSMutableDictionary new]; } static inline MAPIStoreContext * @@ -209,7 +209,7 @@ _prepareContextClass (struct mapistore_context *newMemCtx, inMemCtx: (struct mapistore_context *) newMemCtx { struct loadparm_context *lpCtx; - MAPIStoreMapping *mapping; + NSString *username; if ((self = [self init])) { @@ -221,7 +221,15 @@ _prepareContextClass (struct mapistore_context *newMemCtx, ASSIGN (contextUrl, newUrl); - mapping = [MAPIStoreMapping sharedMapping]; + username = [NSString stringWithUTF8String: newConnInfo->username]; + mapping = [userMAPIStoreMapping objectForKey: username]; + if (!mapping) + { + [self logWithFormat: @"generating mapping of ids for user '%@'", + username]; + mapping = [MAPIStoreMapping mappingWithIndexing: newConnInfo->indexing]; + [userMAPIStoreMapping setObject: mapping forKey: username]; + } if (![mapping urlFromID: newFid]) [mapping registerURL: [newUrl absoluteString] withID: newFid]; @@ -254,6 +262,11 @@ _prepareContextClass (struct mapistore_context *newMemCtx, return woContext; } +- (MAPIStoreMapping *) mapping +{ + return mapping; +} + - (void) setAuthenticator: (MAPIStoreAuthenticator *) newAuthenticator { ASSIGN (authenticator, newAuthenticator); @@ -1332,8 +1345,6 @@ _prepareContextClass (struct mapistore_context *newMemCtx, uint64_t mappingId; uint32_t contextId; - mapping = [MAPIStoreMapping sharedMapping]; - if (key) childURL = [NSString stringWithFormat: @"%@%@", folderURL, key]; else diff --git a/OpenChange/MAPIStoreFolderTable.m b/OpenChange/MAPIStoreFolderTable.m index e492369f0..053a4d76a 100644 --- a/OpenChange/MAPIStoreFolderTable.m +++ b/OpenChange/MAPIStoreFolderTable.m @@ -23,7 +23,6 @@ #import #import "MAPIStoreFolder.h" -#import "MAPIStoreMapping.h" #import "MAPIStoreTypes.h" #import "MAPIStoreFolderTable.h" @@ -35,13 +34,6 @@ @implementation MAPIStoreFolderTable -static MAPIStoreMapping *mapping; - -+ (void) initialize -{ - mapping = [MAPIStoreMapping sharedMapping]; -} - - (id) init { if ((self = [super init])) diff --git a/OpenChange/MAPIStoreMapping.h b/OpenChange/MAPIStoreMapping.h index fa52509a3..d0e6c95ed 100644 --- a/OpenChange/MAPIStoreMapping.h +++ b/OpenChange/MAPIStoreMapping.h @@ -32,9 +32,12 @@ { NSMutableDictionary *mapping; /* FID/MID -> url */ NSMutableDictionary *reverseMapping; /* url -> FID/MID */ + struct tdb_wrap *indexing; } -+ (id) sharedMapping; ++ (id) mappingWithIndexing: (struct tdb_wrap *) indexing; + +- (id) initWithIndexing: (struct tdb_wrap *) indexing; - (NSString *) urlFromID: (uint64_t) idKey; diff --git a/OpenChange/MAPIStoreMapping.m b/OpenChange/MAPIStoreMapping.m index 4b01bcd5d..0636862e7 100644 --- a/OpenChange/MAPIStoreMapping.m +++ b/OpenChange/MAPIStoreMapping.m @@ -28,22 +28,15 @@ #import +#import "MAPIStoreTypes.h" + #import "MAPIStoreMapping.h" -#include -#include #include +#include +#include -struct tdb_wrap { - struct tdb_context *tdb; - - const char *name; - struct tdb_wrap *next, *prev; -}; - -extern struct tdb_wrap *tdb_wrap_open(TALLOC_CTX *mem_ctx, - const char *name, int hash_size, int tdb_flags, - int open_flags, mode_t mode); +@implementation MAPIStoreMapping static int MAPIStoreMappingTDBTraverse (TDB_CONTEXT *ctx, TDB_DATA data1, TDB_DATA data2, @@ -59,7 +52,7 @@ MAPIStoreMappingTDBTraverse (TDB_CONTEXT *ctx, TDB_DATA data1, TDB_DATA data2, idVal = strtoll (idStr, NULL, 16); idNbr = [NSNumber numberWithUnsignedLongLong: idVal]; - uriStr = strdup ((const char *) data2.dptr); + uriStr = strndup ((const char *) data2.dptr, data2.dsize); *(uriStr+(data2.dsize)) = 0; uri = [NSString stringWithUTF8String: uriStr]; free (uriStr); @@ -70,47 +63,39 @@ MAPIStoreMappingTDBTraverse (TDB_CONTEXT *ctx, TDB_DATA data1, TDB_DATA data2, return 0; } -static void -MAPIStoreMappingInitDictionary (NSMutableDictionary *mapping) ++ (id) mappingWithIndexing: (struct tdb_wrap *) indexing { - struct tdb_wrap *wrap; - TDB_CONTEXT *context; - char *tdb_path; + id newMapping; - tdb_path = "/usr/local/samba/private/mapistore/openchange/indexing.tdb"; - wrap = tdb_wrap_open(NULL, tdb_path, 0, TDB_NOLOCK, O_RDONLY, 0600); - if (wrap) - { - context = wrap->tdb; - tdb_traverse_read(wrap->tdb, MAPIStoreMappingTDBTraverse, mapping); - } -} + newMapping = [[self alloc] initWithIndexing: indexing]; + [newMapping autorelease]; -@implementation MAPIStoreMapping - -+ (id) sharedMapping -{ - static id sharedMapping = nil; - - if (!sharedMapping) - sharedMapping = [self new]; - - return sharedMapping; + return newMapping; } - (id) init +{ + if ((self = [super init])) + { + mapping = [NSMutableDictionary new]; + reverseMapping = [NSMutableDictionary new]; + indexing = NULL; + } + + return self; +} + +- (id) initWithIndexing: (struct tdb_wrap *) newIndexing { NSNumber *idNbr; NSString *uri; NSArray *keys; NSUInteger count, max; - if ((self = [super init])) + if ((self = [self init])) { - mapping = [NSMutableDictionary new]; - MAPIStoreMappingInitDictionary (mapping); - reverseMapping = [NSMutableDictionary new]; - + indexing = newIndexing; + tdb_traverse_read (indexing->tdb, MAPIStoreMappingTDBTraverse, mapping); keys = [mapping allKeys]; max = [keys count]; for (count = 0; count < max; count++) @@ -144,7 +129,7 @@ MAPIStoreMappingInitDictionary (NSMutableDictionary *mapping) { NSNumber *idKey; uint64_t idNbr; - + idKey = [reverseMapping objectForKey: url]; if (idKey) idNbr = [idKey unsignedLongLongValue]; @@ -159,13 +144,16 @@ MAPIStoreMappingInitDictionary (NSMutableDictionary *mapping) { NSNumber *idKey; BOOL rc; + TDB_DATA key, dbuf; idKey = [NSNumber numberWithUnsignedLongLong: idNbr]; if ([mapping objectForKey: idKey] || [reverseMapping objectForKey: urlString]) { - [self errorWithFormat: @"attempt to double register an entry ('%@', %lld)", - urlString, idNbr]; + [self errorWithFormat: + @"attempt to double register an entry ('%@', %lld," + @" 0x%.16"PRIx64")", + urlString, idNbr, idNbr]; rc = NO; } else @@ -173,8 +161,18 @@ MAPIStoreMappingInitDictionary (NSMutableDictionary *mapping) [mapping setObject: urlString forKey: idKey]; [reverseMapping setObject: idKey forKey: urlString]; rc = YES; - [self logWithFormat: @"registered url '%@' with id %lld (0x%.8x)", - urlString, idNbr, (uint32_t) idNbr]; + [self logWithFormat: @"registered url '%@' with id %lld (0x%.16"PRIx64")", + urlString, idNbr, idNbr]; + + /* Add the record given its fid and mapistore_uri */ + key.dptr = (unsigned char *) talloc_asprintf(NULL, "0x%.16"PRIx64, idNbr); + key.dsize = strlen((const char *) key.dptr); + + dbuf.dptr = (unsigned char *) talloc_strdup(NULL, [urlString UTF8String]); + dbuf.dsize = strlen((const char *) dbuf.dptr); + tdb_store (indexing->tdb, key, dbuf, TDB_INSERT); + talloc_free (key.dptr); + talloc_free (dbuf.dptr); } return rc; diff --git a/OpenChange/MAPIStoreMessageTable.m b/OpenChange/MAPIStoreMessageTable.m index 057010768..f54f9d61b 100644 --- a/OpenChange/MAPIStoreMessageTable.m +++ b/OpenChange/MAPIStoreMessageTable.m @@ -26,7 +26,6 @@ #import #import "MAPIStoreFolder.h" -#import "MAPIStoreMapping.h" #import "MAPIStoreTypes.h" #import "NSData+MAPIStore.h" #import "NSString+MAPIStore.h" @@ -35,13 +34,6 @@ @implementation MAPIStoreMessageTable -static MAPIStoreMapping *mapping; - -+ (void) initialize -{ - mapping = [MAPIStoreMapping sharedMapping]; -} - - (void) setSortOrder: (const struct SSortOrderSet *) set { [self logWithFormat: @"unimplemented method: %@", NSStringFromSelector (_cmd)]; From d320e468285dff39bb6bc92a2e27a37551ca03f2 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 3 Jun 2011 23:54:23 +0000 Subject: [PATCH 4/6] Monotone-Parent: 1ed44d9759e8a5f57b9c55905872081bf8fec785 Monotone-Revision: 4979a6b1d7d7074bc96b009f55ecc7b83558c956 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-06-03T23:54:23 Monotone-Branch: ca.inverse.sogo --- OpenChange/MAPIStoreCommonViewsContext.m | 2 -- 1 file changed, 2 deletions(-) diff --git a/OpenChange/MAPIStoreCommonViewsContext.m b/OpenChange/MAPIStoreCommonViewsContext.m index 9ced47e14..210cbead7 100644 --- a/OpenChange/MAPIStoreCommonViewsContext.m +++ b/OpenChange/MAPIStoreCommonViewsContext.m @@ -22,8 +22,6 @@ #import -#import "MAPIStoreMapping.h" - #import "MAPIStoreCommonViewsContext.h" @implementation MAPIStoreCommonViewsContext From 786bf7068aadfd523e3510ddc25140062e41dd50 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 3 Jun 2011 23:56:21 +0000 Subject: [PATCH 5/6] Monotone-Parent: 4979a6b1d7d7074bc96b009f55ecc7b83558c956 Monotone-Revision: 1157cc18479225d9cabde00443bb1b31839cf5b6 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-06-03T23:56:21 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ OpenChange/MAPIStoreCalendarMessageTable.m | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ChangeLog b/ChangeLog index fadb5dcaf..0e9e36a0f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-06-03 Wolfgang Sourdeau + * OpenChange/MAPIStoreCalendarMessageTable.m + (-sortIdentifierForProperty:): c_isallday and c_creationdate as + mappings for PidLidAppointmentSubType and PR_CREATION_TIME. + * OpenChange/MAPIStoreContext.m: MAPIStoreMapping instances are now per-user instances rather than class singletons. diff --git a/OpenChange/MAPIStoreCalendarMessageTable.m b/OpenChange/MAPIStoreCalendarMessageTable.m index 1911ac9e1..1703f74fa 100644 --- a/OpenChange/MAPIStoreCalendarMessageTable.m +++ b/OpenChange/MAPIStoreCalendarMessageTable.m @@ -95,6 +95,10 @@ forKey: MAPIPropertyKey (PidLidAppointmentEndWhole)]; [knownProperties setObject: @"c_iscycle" forKey: MAPIPropertyKey (PidLidRecurring)]; + [knownProperties setObject: @"c_isallday" + forKey: MAPIPropertyKey (PidLidAppointmentSubType)]; + [knownProperties setObject: @"c_creationdate" + forKey: MAPIPropertyKey (PR_CREATION_TIME)]; } return [knownProperties objectForKey: MAPIPropertyKey (property)]; From a5614e93f55ea115be9ce22ffd17d7031fce34f3 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 3 Jun 2011 23:59:02 +0000 Subject: [PATCH 6/6] Monotone-Parent: 1157cc18479225d9cabde00443bb1b31839cf5b6 Monotone-Revision: 70abddfe36eb868aa185ad5ad7f41e1c8fe7ee9c Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-06-03T23:59:02 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ OpenChange/MAPIStoreContext.h | 3 +-- OpenChange/MAPIStoreContext.m | 9 +++------ OpenChange/MAPIStoreSOGo.m | 4 ++-- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0e9e36a0f..78b802e77 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-06-03 Wolfgang Sourdeau + * OpenChange/MAPIStoreSOGo.m (sogo_op_opendir): op_opendir no + longer takes the parent fid as parameter. + * OpenChange/MAPIStoreCalendarMessageTable.m (-sortIdentifierForProperty:): c_isallday and c_creationdate as mappings for PidLidAppointmentSubType and PR_CREATION_TIME. diff --git a/OpenChange/MAPIStoreContext.h b/OpenChange/MAPIStoreContext.h index 16616313f..59a42b3ad 100644 --- a/OpenChange/MAPIStoreContext.h +++ b/OpenChange/MAPIStoreContext.h @@ -117,8 +117,7 @@ inParentFID: (uint64_t) parentFID; - (int) rmDirWithFID: (uint64_t) fid inParentFID: (uint64_t) parentFid; -- (int) openDir: (uint64_t) fid - inParentFID: (uint64_t) parentFID; +- (int) openDir: (uint64_t) fid; - (int) closeDir; - (int) readCount: (uint32_t *) rowCount ofTableType: (uint8_t) tableType diff --git a/OpenChange/MAPIStoreContext.m b/OpenChange/MAPIStoreContext.m index 4dbd58198..6e023c352 100644 --- a/OpenChange/MAPIStoreContext.m +++ b/OpenChange/MAPIStoreContext.m @@ -385,18 +385,15 @@ _prepareContextClass (struct mapistore_context *newMemCtx, \return MAPISTORE_SUCCESS on success, otherwise MAPISTORE_ERROR */ - (int) openDir: (uint64_t) fid - inParentFID: (uint64_t) parentFID { [self logWithFormat: - @"UNIMPLEMENTED METHOD '%s' (%d):\n fid=0x%.16x, parentFID=0x%.16x", + @"UNIMPLEMENTED METHOD '%s' (%d):\n fid=0x%.16x", __FUNCTION__, __LINE__, - (unsigned long long) fid, - (unsigned long long) parentFID]; + (unsigned long long) fid]; - return MAPISTORE_ERROR; + return MAPISTORE_SUCCESS; } - /** \details Close a folder from the sogo backend diff --git a/OpenChange/MAPIStoreSOGo.m b/OpenChange/MAPIStoreSOGo.m index bb5d448cc..733f4014e 100644 --- a/OpenChange/MAPIStoreSOGo.m +++ b/OpenChange/MAPIStoreSOGo.m @@ -336,7 +336,7 @@ sogo_op_rmdir(void *private_data, uint64_t parent_fid, uint64_t fid) \return MAPISTORE_SUCCESS on success, otherwise MAPISTORE_ERROR */ static int -sogo_op_opendir(void *private_data, uint64_t parent_fid, uint64_t fid) +sogo_op_opendir(void *private_data, uint64_t fid) { NSAutoreleasePool *pool; sogo_context *cContext; @@ -351,7 +351,7 @@ sogo_op_opendir(void *private_data, uint64_t parent_fid, uint64_t fid) context = cContext->objcContext; [context setupRequest]; - rc = [context openDir: fid inParentFID: parent_fid]; + rc = [context openDir: fid]; [context tearDownRequest]; [pool release];