- folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account), TNY_FOLDER_TYPE_DRAFTS);
- if (folder) {
- if (info->draft_msg != NULL) {
- header = tny_msg_get_header (info->draft_msg);
- /* Note: This can fail (with a warning) if the message is not really already in a folder,
- * because this function requires it to have a UID. */
- tny_folder_remove_msg (folder, header, NULL);
- tny_header_set_flags (header, TNY_HEADER_FLAG_DELETED);
- tny_header_set_flags (header, TNY_HEADER_FLAG_SEEN);
- g_object_unref (header);
- }
+ /* Remove old mail from its source folder */
+ draft_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account), TNY_FOLDER_TYPE_DRAFTS);
+ outbox_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account), TNY_FOLDER_TYPE_OUTBOX);
+ if (info->draft_msg != NULL) {
+ TnyFolder *folder = NULL;
+ TnyFolder *src_folder = NULL;
+ TnyFolderType folder_type;
+ folder = tny_msg_get_folder (info->draft_msg);
+ if (folder == NULL) goto end;
+ folder_type = modest_tny_folder_guess_folder_type (folder);
+ if (folder_type == TNY_FOLDER_TYPE_OUTBOX)
+ src_folder = outbox_folder;
+ else
+ src_folder = draft_folder;
+
+ /* Note: This can fail (with a warning) if the message is not really already in a folder,
+ * because this function requires it to have a UID. */
+ header = tny_msg_get_header (info->draft_msg);
+ tny_folder_remove_msg (src_folder, header, NULL);
+ tny_header_set_flags (header, TNY_HEADER_FLAG_DELETED);
+ tny_header_set_flags (header, TNY_HEADER_FLAG_SEEN);
+ g_object_unref (header);
+ g_object_unref (folder);