From ac1a8c85148ddc9abc7d78532066f1d77b983594 Mon Sep 17 00:00:00 2001 From: Thomas Oster Date: Thu, 7 Jun 2018 09:16:16 +0200 Subject: [PATCH] WIP: Fallback to Copy/Delete if Move not possible --- src/mrimap.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/mrimap.c b/src/mrimap.c index 7c6c77b0..18ff0f31 100644 --- a/src/mrimap.c +++ b/src/mrimap.c @@ -1708,9 +1708,23 @@ int mrimap_markseen_msg(mrimap_t* ths, const char* folder, uint32_t server_uid, struct mailimap_set* res_setdest = NULL; r = mailimap_uidplus_uid_move(ths->m_hEtpan, set, ths->m_moveto_folder, &res_uid, &res_setsrc, &res_setdest); /* the correct folder is already selected in add_flag__() above */ if( is_error(ths, r) ) { - mrmailbox_log_info(ths->m_mailbox, 0, "Cannot move message."); - goto cleanup; - } + mrmailbox_log_info(ths->m_mailbox, 0, "Cannot move message, fallback to COPY/DELETE %s/%i to %s...", folder, (int)server_uid, ths->m_moveto_folder); + r = mailimap_uidplus_uid_copy(ths->m_hEtpan, set, ths->m_moveto_folder, &res_uid, &res_setsrc, &res_setdest); + if (is_error(ths, r)) { + mrmailbox_log_info(ths->m_mailbox, 0, "Cannot copy message. Leaving in INBOX"); + goto cleanup; + } + else { + mrmailbox_log_info(ths->m_mailbox, 0, "Deleting msg ..."); + if( add_flag__(ths, server_uid, mailimap_flag_new_deleted())==0 ) { + mrmailbox_log_warning(ths->m_mailbox, 0, "Cannot mark message as \"Deleted\".");/* maybe the message is already deleted */ + } + + /* force an EXPUNGE resp. CLOSE for the selected folder */ + ths->m_selected_folder_needs_expunge = 1; + } + + } if( res_setsrc ) { mailimap_set_free(res_setsrc);