From 2dfd548d26e179dfb12d836b57a88c215d76a926 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Mon, 8 Apr 2013 19:20:23 +0200
Subject: Bug #271262 - Allow Send/Receive of local stores in offline

---
 mail/em-composer-utils.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

(limited to 'mail/em-composer-utils.c')

diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
index c9bdaabe79..64e1e2deed 100644
--- a/mail/em-composer-utils.c
+++ b/mail/em-composer-utils.c
@@ -520,7 +520,6 @@ composer_send_completed (EMailSession *session,
 	e_mail_session_send_to_finish (session, result, &error);
 
 	if (e_activity_handle_cancellation (context->activity, error)) {
-		g_error_free (error);
 		set_changed = TRUE;
 		goto exit;
 	}
@@ -538,6 +537,16 @@ composer_send_completed (EMailSession *session,
 		e_shell_submit_alert (shell, alert);
 		g_object_unref (alert);
 
+	/* The destination store is offline => save to Outbox and try again later */
+	} else if (g_error_matches (error, CAMEL_SERVICE_ERROR, CAMEL_SERVICE_ERROR_UNAVAILABLE)) {
+		/* Inform the user. */
+		e_alert_run_dialog_for_args (
+			GTK_WINDOW (context->composer),
+			"mail-composer:saving-to-outbox", NULL);
+		e_msg_composer_save_to_outbox (context->composer);
+
+		goto exit;
+
 	/* All other errors are shown in the composer window. */
 	} else if (error != NULL) {
 		gint response;
@@ -555,7 +564,6 @@ composer_send_completed (EMailSession *session,
 			e_msg_composer_send (context->composer);
 		if (response == GTK_RESPONSE_ACCEPT)  /* Save to Outbox */
 			e_msg_composer_save_to_outbox (context->composer);
-		g_error_free (error);
 		set_changed = TRUE;
 		goto exit;
 	}
@@ -569,6 +577,8 @@ composer_send_completed (EMailSession *session,
 		gtk_widget_destroy, context->composer);
 
 exit:
+	g_clear_error (&error);
+
 	if (set_changed) {
 		gtkhtml_editor_set_changed (GTKHTML_EDITOR (context->composer), TRUE);
 		gtk_window_present (GTK_WINDOW (context->composer));
-- 
cgit