[evolution-data-server] Bug #669085 - Saving draft on Google server emits runtime warning



commit f2b7d86cbf2d9b3e26a14cd7e3ca2c807cf39499
Author: Milan Crha <mcrha redhat com>
Date:   Fri Apr 27 13:42:14 2012 +0200

    Bug #669085 - Saving draft on Google server emits runtime warning

 camel/providers/imap/camel-imap-folder.c   |    3 ++-
 camel/providers/imapx/camel-imapx-folder.c |    2 +-
 camel/providers/imapx/camel-imapx-server.c |   14 +++++++++++---
 camel/providers/imapx/camel-imapx-server.h |    1 +
 4 files changed, 15 insertions(+), 5 deletions(-)
---
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c
index 5cfb735..c012b33 100644
--- a/camel/providers/imap/camel-imap-folder.c
+++ b/camel/providers/imap/camel-imap-folder.c
@@ -2448,7 +2448,8 @@ retry:
 	if (!response2)
 		return response2;
 
-	if (store->capabilities & IMAP_CAPABILITY_UIDPLUS) {
+	if ((store->capabilities & IMAP_CAPABILITY_UIDPLUS) != 0 ||
+	    is_google_account (parent_store)) {
 		*uid = camel_strstrcase (response2->status, "[APPENDUID ");
 		if (*uid)
 			*uid = strchr (*uid + 11, ' ');
diff --git a/camel/providers/imapx/camel-imapx-folder.c b/camel/providers/imapx/camel-imapx-folder.c
index 20c8ae9..318ac6a 100644
--- a/camel/providers/imapx/camel-imapx-folder.c
+++ b/camel/providers/imapx/camel-imapx-folder.c
@@ -417,7 +417,7 @@ imapx_append_message_sync (CamelFolder *folder,
 	server = camel_imapx_store_get_server (istore, NULL, cancellable, error);
 	if (server) {
 		success = camel_imapx_server_append_message (
-			server, folder, message, info, cancellable, error);
+			server, folder, message, info, appended_uid, cancellable, error);
 		g_object_unref (server);
 	}
 
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index ce6b255..2d9e598 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -123,6 +123,7 @@ struct _SyncChangesData {
 struct _AppendMessageData {
 	gchar *path;
 	CamelMessageInfo *info;
+	gchar *appended_uid;
 };
 
 struct _CopyMessagesData {
@@ -333,6 +334,7 @@ static void
 append_message_data_free (AppendMessageData *data)
 {
 	g_free (data->path);
+	g_free (data->appended_uid);
 
 	camel_message_info_free (data->info);
 
@@ -3514,10 +3516,9 @@ imapx_command_append_message_done (CamelIMAPXServer *is,
 		c(is->tagprefix, "Got appenduid %d %d\n", (gint)ic->status->u.appenduid.uidvalidity, (gint)ic->status->u.appenduid.uid);
 		if (ic->status->u.appenduid.uidvalidity == ifolder->uidvalidity_on_server) {
 			CamelFolderChangeInfo *changes;
-			gchar *uid;
 
-			uid = g_strdup_printf("%u", (guint)ic->status->u.appenduid.uid);
-			mi->uid = camel_pstring_add (uid, TRUE);
+			data->appended_uid = g_strdup_printf ("%u", (guint) ic->status->u.appenduid.uid);
+			mi->uid = camel_pstring_add (data->appended_uid, FALSE);
 
 			cur = camel_data_cache_get_filename  (ifolder->cache, "cur", mi->uid, NULL);
 			g_rename (data->path, cur);
@@ -5758,6 +5759,7 @@ camel_imapx_server_append_message (CamelIMAPXServer *is,
                                    CamelFolder *folder,
                                    CamelMimeMessage *message,
                                    const CamelMessageInfo *mi,
+				   gchar **appended_uid,
                                    GCancellable *cancellable,
                                    GError **error)
 {
@@ -5816,6 +5818,7 @@ camel_imapx_server_append_message (CamelIMAPXServer *is,
 	data = g_slice_new0 (AppendMessageData);
 	data->info = info;  /* takes ownership */
 	data->path = path;  /* takes ownership */
+	data->appended_uid = NULL;
 
 	job = camel_imapx_job_new (cancellable);
 	job->pri = IMAPX_PRIORITY_APPEND_MESSAGE;
@@ -5829,6 +5832,11 @@ camel_imapx_server_append_message (CamelIMAPXServer *is,
 
 	success = imapx_submit_job (is, job, error);
 
+	if (appended_uid) {
+		*appended_uid = data->appended_uid;
+		data->appended_uid = NULL;
+	}
+
 	camel_imapx_job_unref (job);
 
 	return success;
diff --git a/camel/providers/imapx/camel-imapx-server.h b/camel/providers/imapx/camel-imapx-server.h
index 0172228..e793dde 100644
--- a/camel/providers/imapx/camel-imapx-server.h
+++ b/camel/providers/imapx/camel-imapx-server.h
@@ -194,6 +194,7 @@ gboolean	camel_imapx_server_append_message
 						 CamelFolder *folder,
 						 CamelMimeMessage *message,
 						 const CamelMessageInfo *mi,
+						 gchar **append_uid,
 						 GCancellable *cancellable,
 						 GError **error);
 gboolean	camel_imapx_server_sync_message	(CamelIMAPXServer *is,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]