Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:jberkman
evolution-data-server-2.6
bnc-157323-messages-deleted-from-gw-remain-in-e...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bnc-157323-messages-deleted-from-gw-remain-in-evo.patch of Package evolution-data-server-2.6
Index: camel/providers/groupwise/camel-groupwise-folder.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v retrieving revision 1.118 diff -u -p -r1.118 camel-groupwise-folder.c --- camel/providers/groupwise/camel-groupwise-folder.c 13 Mar 2006 06:31:04 -0000 1.118 +++ camel/providers/groupwise/camel-groupwise-folder.c 15 Mar 2006 08:44:51 -0000 @@ -85,7 +85,7 @@ static void gw_update_all_items ( CamelF static void groupwise_populate_details_from_item (CamelMimeMessage *msg, EGwItem *item); static void groupwise_populate_msg_body_from_item (EGwConnection *cnc, CamelMultipart *multipart, EGwItem *item, char *body); static void groupwise_msg_set_recipient_list (CamelMimeMessage *msg, EGwItem *item); -static void gw_update_cache ( CamelFolder *folder, GList *item_list,CamelException *ex); +static void gw_update_cache ( CamelFolder *folder, GList *item_list, CamelException *ex, gboolean uid_flag); static CamelMimeMessage *groupwise_folder_item_to_msg ( CamelFolder *folder, EGwItem *item, CamelException *ex ); @@ -796,7 +796,7 @@ update_update (CamelSession *session, Ca last_element = g_list_last (item_list); if (items_full_list) { last_element->next = items_full_list; - items_full_list->prev = item_list; + items_full_list->prev = last_element; } items_full_list = item_list; } @@ -807,7 +807,7 @@ update_update (CamelSession *session, Ca /* Take out only the first part in the list until the @ since it is guaranteed to be unique only until that symbol */ - if (items_full_list) { + /*if (items_full_list) { int i; item_list = items_full_list; @@ -821,14 +821,10 @@ update_update (CamelSession *session, Ca i = 0; while (((const char *)item_list->data)[i++]!='@'); ((char *)item_list->data)[i-1] = '\0'; - } + }*/ + g_print ("\nNumber of items in the folder: %d \n", g_list_length(items_full_list)); gw_update_all_items (m->folder, items_full_list, ex); - - if (items_full_list) { - g_list_foreach (items_full_list, (GFunc)g_free, NULL); - g_list_free (items_full_list); - } } static void @@ -947,6 +943,8 @@ groupwise_refresh_folder(CamelFolder *fo time_string = g_strdup (((CamelGroupwiseSummary *) folder->summary)->time_string); t_str = g_strdup (time_string); + +#if 0 /*Get the New Items*/ status = e_gw_connection_get_quick_messages (cnc, container_id, "peek id", @@ -973,17 +971,29 @@ groupwise_refresh_folder(CamelFolder *fo slist = NULL; t_str = g_strdup (time_string); - +#endif + /*Get those items which have been modifed*/ + status = e_gw_connection_get_quick_messages (cnc, container_id, "peek id", &t_str, "Modified", NULL, NULL, -1, &slist); - g_free (t_str), t_str = NULL; + if (status != E_GW_CONNECTION_STATUS_OK) { camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed")); goto end3; } + /* The storing of time-stamp to summary code below should be commented if the + above commented code is uncommented */ + + if (summary->time_string) + g_free (summary->time_string); + + summary->time_string = g_strdup (t_str); + + g_free (t_str), t_str = NULL; + for ( sl = slist ; sl != NULL; sl = sl->next) list = g_list_append (list, sl->data); @@ -995,7 +1005,7 @@ groupwise_refresh_folder(CamelFolder *fo } if (list) { - gw_update_cache (folder, list, ex); + gw_update_cache (folder, list, ex, FALSE); } @@ -1035,7 +1045,7 @@ end1: } void -gw_update_cache ( CamelFolder *folder, GList *list, CamelException *ex) +gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean uid_flag) { CamelGroupwiseMessageInfo *mi = NULL; CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store); @@ -1072,7 +1082,7 @@ gw_update_cache ( CamelFolder *folder, G camel_operation_start (NULL, _("Fetching summary information for new messages in %s"), folder->name); for ( ; item_list != NULL ; item_list = g_list_next (item_list) ) { - EGwItem *temp_item = (EGwItem *)item_list->data; + EGwItem *temp_item ; EGwItem *item; EGwItemType type = E_GW_ITEM_TYPE_UNKNOWN; EGwItemOrganizer *org; @@ -1084,7 +1094,12 @@ gw_update_cache ( CamelFolder *folder, G CamelMimeMessage *mail_msg = NULL; exists = FALSE; - id = e_gw_item_get_id (temp_item); + + if (uid_flag == FALSE) { + temp_item = (EGwItem *)item_list->data; + id = e_gw_item_get_id (temp_item); + } else + id = (char *) item_list->data; camel_operation_progress (NULL, (100*i)/total_items); cache_stream = camel_data_cache_get (gw_folder->cache, "cache", id, ex); @@ -1632,39 +1647,48 @@ gw_update_all_items (CamelFolder *folder { CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder); GPtrArray *summary = camel_folder_get_summary (folder); - int index = 0, i; + int index = 0; GList *temp; - char *uid; CamelFolderChangeInfo *changes = NULL; CamelMessageInfo *info; changes = camel_folder_change_info_new (); + item_list = g_list_reverse (item_list); + /*item_ids : List of ids from the summary*/ while (index < summary->len) { info = g_ptr_array_index (summary, index); temp = NULL; - i = 0; - uid = g_strdup (info->uid); - while (((const char *)uid)[i++]!='@'); - ((char *)uid)[i-1] = '\0'; + if (item_list) { + temp = g_list_find_custom (item_list, (const char *)info->uid, (GCompareFunc) strcmp); + } - temp = g_list_find_custom (item_list, (const char*)uid, (GCompareFunc) strcmp); - g_free (uid); - if (!temp) { CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock); camel_folder_summary_remove_uid (folder->summary, info->uid); camel_data_cache_remove (gw_folder->cache, "cache", info->uid, ex); camel_folder_change_info_remove_uid (changes, info->uid); CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock); - } else - item_list = g_list_remove(item_list, temp); - + } else { + item_list = g_list_delete_link (item_list, temp); + } index ++; } - + camel_object_trigger_event (folder, "folder_changed", changes); + + if (item_list) { + CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store); + + CAMEL_SERVICE_LOCK (gw_store, connect_lock); + gw_update_cache (folder, item_list, ex, TRUE); + CAMEL_SERVICE_UNLOCK (gw_store, connect_lock); + + g_list_foreach (item_list, (GFunc)g_free, NULL); + g_list_free (item_list); + } + camel_folder_free_summary (folder, summary); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor