[evolution-data-server] Bug 746395 - Let the provider store sent messages on its own
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug 746395 - Let the provider store sent messages on its own
- Date: Wed, 1 Apr 2015 15:34:49 +0000 (UTC)
commit 2c3ce9d83d7e16e477d307155e05ac60d4c7ebc5
Author: Milan Crha <mcrha redhat com>
Date: Wed Apr 1 17:34:21 2015 +0200
Bug 746395 - Let the provider store sent messages on its own
camel/camel-transport.c | 18 +++++++++++++++++-
camel/camel-transport.h | 3 +++
.../providers/sendmail/camel-sendmail-transport.c | 1 +
camel/providers/smtp/camel-smtp-transport.c | 1 +
configure.ac | 2 +-
5 files changed, 23 insertions(+), 2 deletions(-)
---
diff --git a/camel/camel-transport.c b/camel/camel-transport.c
index 38ad3db..847baa5 100644
--- a/camel/camel-transport.c
+++ b/camel/camel-transport.c
@@ -42,6 +42,7 @@ struct _AsyncContext {
CamelAddress *from;
CamelAddress *recipients;
CamelMimeMessage *message;
+ gboolean sent_message_saved;
};
G_DEFINE_ABSTRACT_TYPE (CamelTransport, camel_transport, CAMEL_TYPE_SERVICE)
@@ -79,6 +80,7 @@ camel_transport_init (CamelTransport *transport)
* @message: a #CamelMimeMessage to send
* @from: a #CamelAddress to send from
* @recipients: a #CamelAddress containing all recipients
+ * @out_sent_message_saved: set to %TRUE, if the sent message was also saved
* @cancellable: optional #GCancellable object, or %NULL
* @error: return location for a #GError, or %NULL
*
@@ -95,6 +97,7 @@ camel_transport_send_to_sync (CamelTransport *transport,
CamelMimeMessage *message,
CamelAddress *from,
CamelAddress *recipients,
+ gboolean *out_sent_message_saved,
GCancellable *cancellable,
GError **error)
{
@@ -106,6 +109,7 @@ camel_transport_send_to_sync (CamelTransport *transport,
g_return_val_if_fail (CAMEL_IS_MIME_MESSAGE (message), FALSE);
g_return_val_if_fail (CAMEL_IS_ADDRESS (from), FALSE);
g_return_val_if_fail (CAMEL_IS_ADDRESS (recipients), FALSE);
+ g_return_val_if_fail (out_sent_message_saved != NULL, FALSE);
closure = camel_async_closure_new ();
@@ -116,7 +120,7 @@ camel_transport_send_to_sync (CamelTransport *transport,
result = camel_async_closure_wait (closure);
- success = camel_transport_send_to_finish (transport, result, error);
+ success = camel_transport_send_to_finish (transport, result, out_sent_message_saved, error);
camel_async_closure_free (closure);
@@ -147,6 +151,7 @@ transport_send_to_thread (GTask *task,
async_context->message,
async_context->from,
async_context->recipients,
+ &async_context->sent_message_saved,
cancellable, &local_error);
CAMEL_CHECK_LOCAL_GERROR (
transport, send_to_sync, success, local_error);
@@ -232,6 +237,7 @@ camel_transport_send_to (CamelTransport *transport,
* camel_transport_send_to_finish:
* @transport: a #CamelTransport
* @result: a #GAsyncResult
+ * @out_sent_message_saved: set to %TRUE, if the sent message was also saved
* @error: return locaton for a #GError, or %NULL
*
* Finishes the operation started with camel_transport_send_to().
@@ -243,8 +249,11 @@ camel_transport_send_to (CamelTransport *transport,
gboolean
camel_transport_send_to_finish (CamelTransport *transport,
GAsyncResult *result,
+ gboolean *out_sent_message_saved,
GError **error)
{
+ AsyncContext *async_context;
+
g_return_val_if_fail (CAMEL_IS_TRANSPORT (transport), FALSE);
g_return_val_if_fail (g_task_is_valid (result, transport), FALSE);
@@ -252,5 +261,12 @@ camel_transport_send_to_finish (CamelTransport *transport,
g_async_result_is_tagged (
result, camel_transport_send_to), FALSE);
+ g_return_val_if_fail (out_sent_message_saved != NULL, FALSE);
+
+ async_context = g_task_get_task_data (G_TASK (result));
+ g_return_val_if_fail (async_context != NULL, FALSE);
+
+ *out_sent_message_saved = async_context->sent_message_saved;
+
return g_task_propagate_boolean (G_TASK (result), error);
}
diff --git a/camel/camel-transport.h b/camel/camel-transport.h
index ee07cab..df51094 100644
--- a/camel/camel-transport.h
+++ b/camel/camel-transport.h
@@ -67,6 +67,7 @@ struct _CamelTransportClass {
CamelMimeMessage *message,
CamelAddress *from,
CamelAddress *recipients,
+ gboolean *out_sent_message_saved,
GCancellable *cancellable,
GError **error);
@@ -79,6 +80,7 @@ gboolean camel_transport_send_to_sync (CamelTransport *transport,
CamelMimeMessage *message,
CamelAddress *from,
CamelAddress *recipients,
+ gboolean *out_sent_message_saved,
GCancellable *cancellable,
GError **error);
void camel_transport_send_to (CamelTransport *transport,
@@ -91,6 +93,7 @@ void camel_transport_send_to (CamelTransport *transport,
gpointer user_data);
gboolean camel_transport_send_to_finish (CamelTransport *transport,
GAsyncResult *result,
+ gboolean *out_sent_message_saved,
GError **error);
G_END_DECLS
diff --git a/camel/providers/sendmail/camel-sendmail-transport.c
b/camel/providers/sendmail/camel-sendmail-transport.c
index 1348d3b..6753395 100644
--- a/camel/providers/sendmail/camel-sendmail-transport.c
+++ b/camel/providers/sendmail/camel-sendmail-transport.c
@@ -110,6 +110,7 @@ sendmail_send_to_sync (CamelTransport *transport,
CamelMimeMessage *message,
CamelAddress *from,
CamelAddress *recipients,
+ gboolean *out_sent_message_saved,
GCancellable *cancellable,
GError **error)
{
diff --git a/camel/providers/smtp/camel-smtp-transport.c b/camel/providers/smtp/camel-smtp-transport.c
index c23ee8e..53c90ef 100644
--- a/camel/providers/smtp/camel-smtp-transport.c
+++ b/camel/providers/smtp/camel-smtp-transport.c
@@ -730,6 +730,7 @@ smtp_transport_send_to_sync (CamelTransport *transport,
CamelMimeMessage *message,
CamelAddress *from,
CamelAddress *recipients,
+ gboolean *out_sent_message_saved,
GCancellable *cancellable,
GError **error)
{
diff --git a/configure.ac b/configure.ac
index a4038a7..7e9b33b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -134,7 +134,7 @@ LIBEBOOK_CONTACTS_CURRENT=1
LIBEBOOK_CONTACTS_REVISION=0
LIBEBOOK_CONTACTS_AGE=0
-LIBCAMEL_CURRENT=52
+LIBCAMEL_CURRENT=53
LIBCAMEL_REVISION=0
LIBCAMEL_AGE=0
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]