[evolution] Bug 746395 - Let the provider store sent messages on its own



commit 38232653f3b5c944f5d0d0e77bec98a09bb1b4ba
Author: Milan Crha <mcrha redhat com>
Date:   Wed Apr 1 17:35:36 2015 +0200

    Bug 746395 - Let the provider store sent messages on its own

 libemail-engine/e-mail-session-utils.c |    5 +++--
 libemail-engine/mail-ops.c             |    5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)
---
diff --git a/libemail-engine/e-mail-session-utils.c b/libemail-engine/e-mail-session-utils.c
index 8a8e96c..63b49f6 100644
--- a/libemail-engine/e-mail-session-utils.c
+++ b/libemail-engine/e-mail-session-utils.c
@@ -521,6 +521,7 @@ mail_session_send_to_thread (GSimpleAsyncResult *simple,
        CamelServiceConnectionStatus status;
        GString *error_messages;
        gboolean copy_to_sent = TRUE;
+       gboolean sent_message_saved = FALSE;
        gboolean did_connect = FALSE;
        guint ii;
        GError *error = NULL;
@@ -582,7 +583,7 @@ mail_session_send_to_thread (GSimpleAsyncResult *simple,
        camel_transport_send_to_sync (
                CAMEL_TRANSPORT (context->transport),
                context->message, context->from,
-               context->recipients, cancellable, &error);
+               context->recipients, &sent_message_saved, cancellable, &error);
 
        if (did_connect) {
                /* Disconnect regardless of error or cancellation,
@@ -674,7 +675,7 @@ skip_send:
                        copy_to_sent = FALSE;
        }
 
-       if (!copy_to_sent)
+       if (!copy_to_sent || sent_message_saved)
                goto cleanup;
 
        /* Append the sent message to a Sent folder. */
diff --git a/libemail-engine/mail-ops.c b/libemail-engine/mail-ops.c
index 8e6484d..a2a3081 100644
--- a/libemail-engine/mail-ops.c
+++ b/libemail-engine/mail-ops.c
@@ -607,6 +607,7 @@ mail_send_message (struct _send_queue_msg *m,
        gint i;
        GError *local_error = NULL;
        gboolean did_connect = FALSE;
+       gboolean sent_message_saved = FALSE;
 
        message = camel_folder_get_message_sync (
                queue, uid, cancellable, error);
@@ -695,7 +696,7 @@ mail_send_message (struct _send_queue_msg *m,
 
                if (!camel_transport_send_to_sync (
                        CAMEL_TRANSPORT (service), message,
-                       from, recipients, cancellable, error))
+                       from, recipients, &sent_message_saved, cancellable, error))
                        goto exit;
        }
 
@@ -759,7 +760,7 @@ mail_send_message (struct _send_queue_msg *m,
                }
        }
 
-       if (local_error == NULL && (provider == NULL
+       if (local_error == NULL && !sent_message_saved && (provider == NULL
            || !(provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER))) {
                CamelFolder *local_sent_folder;
 


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