evolution-data-server/bnc-153522-evo-doesnt-update-msg-status-workaround.patch

121 lines
4.8 KiB
Diff

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.120
diff -u -p -r1.120 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 17 Mar 2006 05:42:00 -0000 1.120
+++ camel/providers/groupwise/camel-groupwise-folder.c 20 Mar 2006 08:12:51 -0000
@@ -1006,7 +1006,7 @@ groupwise_refresh_folder(CamelFolder *fo
if (gw_store->current_folder != folder) {
gw_store->current_folder = folder;
}
-
+
if (list) {
gw_update_cache (folder, list, ex, FALSE);
}
@@ -1051,6 +1051,7 @@ void
gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean uid_flag)
{
CamelGroupwiseMessageInfo *mi = NULL;
+ CamelMessageInfo *pmi = NULL;
CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
CamelGroupwiseStorePrivate *priv = gw_store->priv;
@@ -1105,13 +1105,6 @@ gw_update_cache (CamelFolder *folder, GL
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);
- if (cache_stream) {
- camel_object_unref (cache_stream);
- cache_stream = NULL;
- i++;
- continue;
- }
status = e_gw_connection_get_item (cnc, container_id, id, "peek default distribution recipient message attachments subject notification created recipientStatus status size", &item);
if (status != E_GW_CONNECTION_STATUS_OK) {
@@ -1121,9 +1114,16 @@ gw_update_cache (CamelFolder *folder, GL
/************************ First populate summary *************************/
mi = NULL;
- mi = (CamelGroupwiseMessageInfo *)camel_folder_summary_uid (folder->summary, id);
- if (mi) {
+ pmi = NULL;
+ pmi = camel_folder_summary_uid (folder->summary, id);
+ if (pmi) {
exists = TRUE;
+ camel_message_info_ref (pmi);
+ mi = (CamelGroupwiseMessageInfo *)camel_message_info_clone(pmi);
+ /*
+ pmi->summary = folder->summary;
+ mi->info.summary = folder->summary;
+ */
}
if (!exists) {
@@ -1223,18 +1223,26 @@ gw_update_cache (CamelFolder *folder, GL
mi->info.date_sent = mi->info.date_received = actual_time;
}
}
+#if 0
if (exists)
g_free(mi->info.uid);
mi->info.uid = g_strdup(e_gw_item_get_id(item));
- if (!exists)
+#endif
+ if (!exists) {
+ mi->info.uid = g_strdup (e_gw_item_get_id(item));
mi->info.size = e_gw_item_get_mail_size (item);
- if (!exists)
mi->info.subject = camel_pstring_strdup(e_gw_item_get_subject(item));
+ }
if (exists) {
- camel_folder_change_info_change_uid (changes, e_gw_item_get_id (item));
- camel_message_info_free (&mi->info);
+ /*
+ camel_folder_change_info_change_uid (changes, mi->info.uid);
+ camel_message_info_free (&mi->info);*/
+ camel_folder_summary_remove(folder->summary, pmi);
+ camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
+ camel_folder_change_info_add_uid (changes, mi->info.uid);
+ camel_message_info_free (pmi);
} else {
camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
camel_folder_change_info_add_uid (changes, mi->info.uid);
@@ -1248,11 +1256,11 @@ gw_update_cache (CamelFolder *folder, GL
if (!strcmp (folder->full_name, "Sent Items"))
exists = FALSE;
/******************** Begine Caching ************************/
- mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
- if (mail_msg)
- camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
/* add to cache if its a new message*/
if (!exists) {
+ mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
+ if (mail_msg)
+ camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", id, NULL))) {
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) mail_msg, cache_stream) == -1 || camel_stream_flush (cache_stream) == -1)
@@ -1678,7 +1686,7 @@ static void
gw_update_all_items (CamelFolder *folder, GList *item_list, CamelException *ex)
{
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder);
- GPtrArray *summary = camel_folder_get_summary (folder);
+ GPtrArray *summary = NULL;
int index = 0;
GList *temp;
CamelFolderChangeInfo *changes = NULL;
@@ -1687,6 +1695,7 @@ gw_update_all_items (CamelFolder *folder
item_list = g_list_reverse (item_list);
+ summary = camel_folder_get_summary (folder);
/*item_ids : List of ids from the summary*/
while (index < summary->len) {
info = g_ptr_array_index (summary, index);