add try catch to all functions on struct mapistore_backend

pull/49/head
Jesús García Sáez 2014-03-04 12:29:13 +01:00 committed by Julio García
parent d1f54298d2
commit a77863947f
1 changed files with 87 additions and 1 deletions

View File

@ -53,6 +53,11 @@
static Class MAPIStoreContextK = Nil;
static BOOL leakDebugging = NO;
#define TRYCATCH_START @try {
#define TRYCATCH_END } @catch (NSException * e) { \
return sogo_backend_handle_objc_exception(e, __PRETTY_FUNCTION__, __LINE__); \
}
static enum mapistore_error
sogo_backend_unexpected_error()
{
@ -64,7 +69,8 @@ sogo_backend_unexpected_error()
static enum mapistore_error
sogo_backend_handle_objc_exception(NSException *e, const char *fn_name, const int line_no)
{
DEBUG(0,("[SOGo: %s:%d] - EXCEPTION: %s, reason: %s\n", fn_name, line_no, [[e name] UTF8String], [[e reason] UTF8String]));
NSLog(@"[SOGo: %s:%d] - EXCEPTION: %@, reason: %@, stackframe: %@",
fn_name, line_no, e.name, e.reason, [e callStackSymbols]);
if ([[e name] isEqual:@"NotImplementedException"])
{
return MAPISTORE_ERR_NOT_IMPLEMENTED;
@ -159,6 +165,7 @@ sogo_backend_create_context(TALLOC_CTX *mem_ctx,
struct indexing_context *indexing,
const char *uri, void **context_object)
{
TRYCATCH_START
NSAutoreleasePool *pool;
MAPIStoreContext *context;
int rc;
@ -184,6 +191,7 @@ sogo_backend_create_context(TALLOC_CTX *mem_ctx,
GSUnregisterCurrentThread ();
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -193,6 +201,7 @@ sogo_backend_create_root_folder (const char *username,
// struct indexing_context *indexing,
TALLOC_CTX *mem_ctx, char **mapistore_urip)
{
TRYCATCH_START
NSAutoreleasePool *pool;
NSString *userName, *folderName;
NSString *mapistoreUri;
@ -222,6 +231,7 @@ sogo_backend_create_root_folder (const char *username,
GSUnregisterCurrentThread ();
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -229,6 +239,7 @@ sogo_backend_list_contexts(const char *username, struct indexing_context *indexi
TALLOC_CTX *mem_ctx,
struct mapistore_contexts_list **contexts_listp)
{
TRYCATCH_START
NSAutoreleasePool *pool;
NSString *userName;
int rc;
@ -253,6 +264,7 @@ sogo_backend_list_contexts(const char *username, struct indexing_context *indexi
GSUnregisterCurrentThread ();
return rc;
TRYCATCH_END
}
// andFID: fid
@ -274,6 +286,7 @@ static enum mapistore_error
sogo_context_get_path(void *backend_object, TALLOC_CTX *mem_ctx,
uint64_t fmid, char **path)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreContext *context;
@ -297,12 +310,14 @@ sogo_context_get_path(void *backend_object, TALLOC_CTX *mem_ctx,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_context_get_root_folder(void *backend_object, TALLOC_CTX *mem_ctx,
uint64_t fid, void **folder_object)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreContext *context;
@ -329,6 +344,7 @@ sogo_context_get_root_folder(void *backend_object, TALLOC_CTX *mem_ctx,
}
return rc;
TRYCATCH_END
}
/**
@ -343,6 +359,7 @@ sogo_context_get_root_folder(void *backend_object, TALLOC_CTX *mem_ctx,
static enum mapistore_error
sogo_folder_open_folder(void *folder_object, TALLOC_CTX *mem_ctx, uint64_t fid, void **childfolder_object)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder, *childFolder;
@ -369,6 +386,7 @@ sogo_folder_open_folder(void *folder_object, TALLOC_CTX *mem_ctx, uint64_t fid,
}
return rc;
TRYCATCH_END
}
/**
@ -383,6 +401,7 @@ sogo_folder_create_folder(void *folder_object, TALLOC_CTX *mem_ctx,
uint64_t fid, struct SRow *aRow,
void **childfolder_object)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder, *childFolder;
@ -408,6 +427,7 @@ sogo_folder_create_folder(void *folder_object, TALLOC_CTX *mem_ctx,
}
return rc;
TRYCATCH_END
}
/**
@ -422,6 +442,7 @@ sogo_folder_create_folder(void *folder_object, TALLOC_CTX *mem_ctx,
static enum mapistore_error
sogo_folder_delete(void *folder_object)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder;
@ -445,11 +466,13 @@ sogo_folder_delete(void *folder_object)
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_folder_get_child_count(void *folder_object, enum mapistore_table_type table_type, uint32_t *child_count)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder;
@ -473,6 +496,7 @@ sogo_folder_get_child_count(void *folder_object, enum mapistore_table_type table
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -481,6 +505,7 @@ sogo_folder_open_message(void *folder_object,
uint64_t mid, bool write_access,
void **message_object)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder;
@ -510,6 +535,7 @@ sogo_folder_open_message(void *folder_object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -519,6 +545,7 @@ sogo_folder_create_message(void *folder_object,
uint8_t associated,
void **message_object)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder;
@ -547,11 +574,13 @@ sogo_folder_create_message(void *folder_object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_folder_delete_message(void *folder_object, uint64_t mid, uint8_t flags)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder;
@ -575,6 +604,7 @@ sogo_folder_delete_message(void *folder_object, uint64_t mid, uint8_t flags)
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -586,6 +616,7 @@ sogo_folder_move_copy_messages(void *folder_object,
struct Binary_r **target_change_keys,
uint8_t want_copy)
{
TRYCATCH_START
MAPIStoreFolder *sourceFolder, *targetFolder;
NSAutoreleasePool *pool;
struct MAPIStoreTallocWrapper *wrapper;
@ -619,12 +650,14 @@ sogo_folder_move_copy_messages(void *folder_object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_folder_move_folder(void *folder_object, void *target_folder_object,
TALLOC_CTX *mem_ctx, const char *new_folder_name)
{
TRYCATCH_START
NSAutoreleasePool *pool;
MAPIStoreFolder *moveFolder, *targetFolder;
NSString *newFolderName;
@ -667,12 +700,14 @@ sogo_folder_move_folder(void *folder_object, void *target_folder_object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_folder_copy_folder(void *folder_object, void *target_folder_object, TALLOC_CTX *mem_ctx,
bool recursive, const char *new_folder_name)
{
TRYCATCH_START
NSAutoreleasePool *pool;
MAPIStoreFolder *copyFolder, *targetFolder;
NSString *newFolderName;
@ -709,6 +744,7 @@ sogo_folder_copy_folder(void *folder_object, void *target_folder_object, TALLOC_
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -716,6 +752,7 @@ sogo_folder_get_deleted_fmids(void *folder_object, TALLOC_CTX *mem_ctx,
enum mapistore_table_type table_type, uint64_t change_num,
struct UI8Array_r **fmidsp, uint64_t *cnp)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder;
@ -743,6 +780,7 @@ sogo_folder_get_deleted_fmids(void *folder_object, TALLOC_CTX *mem_ctx,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -750,6 +788,7 @@ sogo_folder_open_table(void *folder_object, TALLOC_CTX *mem_ctx,
enum mapistore_table_type table_type, uint32_t handle_id,
void **table_object, uint32_t *row_count)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder;
@ -779,6 +818,7 @@ sogo_folder_open_table(void *folder_object, TALLOC_CTX *mem_ctx,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -786,6 +826,7 @@ sogo_folder_modify_permissions(void *folder_object, uint8_t flags,
uint16_t pcount,
struct PermissionData *permissions)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder;
@ -811,11 +852,13 @@ sogo_folder_modify_permissions(void *folder_object, uint8_t flags,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_folder_preload_message_bodies(void *folder_object, enum mapistore_table_type table_type, const struct UI8Array_r *mids)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreFolder *folder;
@ -840,6 +883,7 @@ sogo_folder_preload_message_bodies(void *folder_object, enum mapistore_table_typ
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -847,6 +891,7 @@ sogo_message_get_message_data(void *message_object,
TALLOC_CTX *mem_ctx,
struct mapistore_message **msg_dataP)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreMessage *message;
@ -872,11 +917,13 @@ sogo_message_get_message_data(void *message_object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_message_create_attachment (void *message_object, TALLOC_CTX *mem_ctx, void **attachment_object, uint32_t *aidp)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreMessage *message;
@ -904,12 +951,14 @@ sogo_message_create_attachment (void *message_object, TALLOC_CTX *mem_ctx, void
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_message_open_attachment (void *message_object, TALLOC_CTX *mem_ctx,
uint32_t aid, void **attachment_object)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreMessage *message;
@ -937,11 +986,13 @@ sogo_message_open_attachment (void *message_object, TALLOC_CTX *mem_ctx,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_message_get_attachment_table (void *message_object, TALLOC_CTX *mem_ctx, void **table_object, uint32_t *row_count)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreMessage *message;
@ -970,6 +1021,7 @@ sogo_message_get_attachment_table (void *message_object, TALLOC_CTX *mem_ctx, vo
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -978,6 +1030,7 @@ sogo_message_modify_recipients (void *message_object,
uint16_t count,
struct mapistore_message_recipient *recipients)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreMessage *message;
@ -1004,11 +1057,13 @@ sogo_message_modify_recipients (void *message_object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_message_set_read_flag (void *message_object, uint8_t flag)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreMessage *message;
@ -1033,11 +1088,13 @@ sogo_message_set_read_flag (void *message_object, uint8_t flag)
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_message_save (void *message_object, TALLOC_CTX *mem_ctx)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreMessage *message;
@ -1062,11 +1119,13 @@ sogo_message_save (void *message_object, TALLOC_CTX *mem_ctx)
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_message_submit (void *message_object, enum SubmitFlags flags)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreMailVolatileMessage *message;
@ -1091,6 +1150,7 @@ sogo_message_submit (void *message_object, enum SubmitFlags flags)
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -1100,6 +1160,7 @@ sogo_message_attachment_open_embedded_message (void *attachment_object,
uint64_t *midP,
struct mapistore_message **msg)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreAttachment *attachment;
@ -1129,6 +1190,7 @@ sogo_message_attachment_open_embedded_message (void *attachment_object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -1137,6 +1199,7 @@ sogo_message_attachment_create_embedded_message (void *attachment_object,
void **message_object,
struct mapistore_message **msg)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreAttachment *attachment;
@ -1172,11 +1235,13 @@ sogo_message_attachment_create_embedded_message (void *attachment_object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error sogo_table_get_available_properties(void *table_object,
TALLOC_CTX *mem_ctx, struct SPropTagArray **propertiesP)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreTable *table;
@ -1200,11 +1265,13 @@ static enum mapistore_error sogo_table_get_available_properties(void *table_obje
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_table_set_columns (void *table_object, uint16_t count, enum MAPITAGS *properties)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreTable *table;
@ -1229,11 +1296,13 @@ sogo_table_set_columns (void *table_object, uint16_t count, enum MAPITAGS *prope
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_table_set_restrictions (void *table_object, struct mapi_SRestriction *restrictions, uint8_t *table_status)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreTable *table;
@ -1260,11 +1329,13 @@ sogo_table_set_restrictions (void *table_object, struct mapi_SRestriction *restr
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_table_set_sort_order (void *table_object, struct SSortOrderSet *sort_order, uint8_t *table_status)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreTable *table;
@ -1291,6 +1362,7 @@ sogo_table_set_sort_order (void *table_object, struct SSortOrderSet *sort_order,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -1298,6 +1370,7 @@ sogo_table_get_row (void *table_object, TALLOC_CTX *mem_ctx,
enum mapistore_query_type query_type, uint32_t row_id,
struct mapistore_property_data **data)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreTable *table;
@ -1322,6 +1395,7 @@ sogo_table_get_row (void *table_object, TALLOC_CTX *mem_ctx,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -1329,6 +1403,7 @@ sogo_table_get_row_count (void *table_object,
enum mapistore_query_type query_type,
uint32_t *row_countp)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreTable *table;
@ -1353,11 +1428,13 @@ sogo_table_get_row_count (void *table_object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_table_handle_destructor (void *table_object, uint32_t handle_id)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreTable *table;
@ -1382,12 +1459,14 @@ sogo_table_handle_destructor (void *table_object, uint32_t handle_id)
}
return rc;
TRYCATCH_END
}
static enum mapistore_error sogo_properties_get_available_properties(void *object,
TALLOC_CTX *mem_ctx,
struct SPropTagArray **propertiesP)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreObject *propObject;
@ -1411,6 +1490,7 @@ static enum mapistore_error sogo_properties_get_available_properties(void *objec
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -1419,6 +1499,7 @@ sogo_properties_get_properties (void *object,
uint16_t count, enum MAPITAGS *properties,
struct mapistore_property_data *data)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreObject *propObject;
@ -1444,11 +1525,13 @@ sogo_properties_get_properties (void *object,
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
sogo_properties_set_properties (void *object, struct SRow *aRow)
{
TRYCATCH_START
struct MAPIStoreTallocWrapper *wrapper;
NSAutoreleasePool *pool;
MAPIStoreObject *propObject;
@ -1472,6 +1555,7 @@ sogo_properties_set_properties (void *object, struct SRow *aRow)
}
return rc;
TRYCATCH_END
}
static enum mapistore_error
@ -1482,6 +1566,7 @@ sogo_manager_generate_uri (TALLOC_CTX *mem_ctx,
const char *rootURI,
char **uri)
{
TRYCATCH_START
NSAutoreleasePool *pool;
NSString *partialURLString, *username, *directory;
@ -1518,6 +1603,7 @@ sogo_manager_generate_uri (TALLOC_CTX *mem_ctx,
GSUnregisterCurrentThread ();
return MAPISTORE_SUCCESS;
TRYCATCH_END
}
/**