} else {
/* Add the msg to the queue */
modest_mail_operation_notify_start (self);
- modest_tny_send_queue_add (MODEST_TNY_SEND_QUEUE(send_queue),
- msg,
- &(priv->error));
-
- priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
info = g_slice_new0 (SendMsgInfo);
info->mail_op = g_object_ref (self);
info->msg = g_object_ref (msg);
info->msg_sent_handler = g_signal_connect (G_OBJECT (send_queue), "msg-sent",
- G_CALLBACK (send_mail_msg_sent_handler), info);
+ G_CALLBACK (send_mail_msg_sent_handler), info);
info->error_happened_handler = g_signal_connect (G_OBJECT (send_queue), "error-happened",
- G_CALLBACK (send_mail_error_happened_handler), info);
+ G_CALLBACK (send_mail_error_happened_handler), info);
+
+ modest_tny_send_queue_add (MODEST_TNY_SEND_QUEUE(send_queue),
+ msg,
+ &(priv->error));
+
+ priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
}
}
if (msgid2 == NULL) msgid2 = "(null)";
if (!strcmp (msgid1, msgid2)) {
+ if (error != NULL)
+ g_warning ("%s: %s\n", __FUNCTION__, error->message);
ModestMailOperationPrivate *priv = MODEST_MAIL_OPERATION_GET_PRIVATE (info->mail_op);
priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
/* Remove old mail from its source folder */
draft_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account),
TNY_FOLDER_TYPE_DRAFTS);
+ if (!draft_folder) {
+ g_warning ("%s: modest_tny_account_get_special_folder(..) returned a NULL drafts folder", __FUNCTION__);
+ goto end;
+ }
outbox_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account),
TNY_FOLDER_TYPE_OUTBOX);
+ if (!outbox_folder) {
+ g_warning ("%s: modest_tny_account_get_special_folder(..) returned a NULL outbox folder", __FUNCTION__);
+ goto end;
+ }
if (info->draft_msg != NULL) {
TnyFolder *folder = NULL;
TnyFolder *src_folder = NULL;
priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
if (!msg) {
- g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
- MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED,
- "modest: failed to create a new msg\n");
+ if (!(priv->error)) {
+ g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
+ MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED,
+ "modest: failed to create a new msg\n");
+ }
} else {
drafts = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account),
TNY_FOLDER_TYPE_DRAFTS);
- if (!drafts) {
+ if (!drafts && !(priv->error)) {
g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND,
"modest: failed to create a new msg\n");
/* Add pending call */
info->pending_calls++;
- tny_folder_store_get_folders_async (folder, folders, recurse_folders_async_cb,
- NULL, NULL, info);
+ tny_folder_store_get_folders_async (folder, folders, NULL,
+ recurse_folders_async_cb,
+ NULL, info);
g_object_unref (G_OBJECT (folder));
TNY_FOLDER_STORE (trash_folder),
TRUE, NULL, NULL);
g_object_unref (trash_folder);
+ } else {
+ g_warning ("%s: modest_tny_account_get_special_folder(..) returned a NULL trash folder", __FUNCTION__);
}
} else {
TnyFolderStore *parent = tny_folder_get_folder_store (folder);
TnyIterator *iter = NULL;
g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
-
+
/* Init mail operation */
priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
if (notify)
notify (user_data);
}
+
}
if (!priv->error) {
gboolean expunge, leave_on_server;
const gchar *account_name;
+ const gchar *proto;
TnyAccount *account;
- ModestTransportStoreProtocol account_proto;
+ ModestTransportStoreProtocol account_proto = MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN;
account = tny_folder_get_account (folder);
account_name = modest_tny_account_get_parent_modest_account_name_for_server_account (account);
modest_account_mgr_get_leave_on_server (modest_runtime_get_account_mgr (),
account_name);
- account_proto = modest_protocol_info_get_transport_store_protocol (tny_account_get_proto (account));
+ proto = tny_account_get_proto (account);
+ if (proto) {
+ account_proto = modest_protocol_info_get_transport_store_protocol (proto);
+ }
if (((account_proto == MODEST_PROTOCOL_STORE_POP) && !leave_on_server) ||
modest_tny_folder_is_remote_folder (folder) == FALSE)
tny_iterator_next (iter);
}
-
}