mirror of
https://github.com/chatmail/core.git
synced 2026-04-28 19:06:35 +03:00
fix(download_msg): do not fail if the message does not exist anymore
Without this fix IMAP loop may get stuck trying to download non-existing message over and over like this: ``` src/imap.rs:372: Logging into IMAP server with LOGIN. src/imap.rs:388: Successfully logged into IMAP server src/scheduler.rs:361: Failed to download message Msg#3467: Message Msg#3467 does not exist. src/scheduler.rs:418: Failed fetch_idle: Failed to download messages: Message Msg#3467 does not exist ``` The whole download operation fails due to attempt to set the state of non-existing message to "failed". Now download of the message will "succeed" if the message does not exist and we don't try to set its state.
This commit is contained in:
@@ -135,7 +135,17 @@ pub(crate) async fn download_msg(
|
||||
msg_id: MsgId,
|
||||
session: &mut Session,
|
||||
) -> Result<()> {
|
||||
let msg = Message::load_from_db(context, msg_id).await?;
|
||||
let Some(msg) = Message::load_from_db_optional(context, msg_id).await? else {
|
||||
// If partially downloaded message was already deleted
|
||||
// we do not know its Message-ID anymore
|
||||
// so cannot download it.
|
||||
//
|
||||
// Probably the message expired due to `delete_device_after`
|
||||
// setting or was otherwise removed from the device,
|
||||
// so we don't want it to reappear anyway.
|
||||
return Ok(());
|
||||
};
|
||||
|
||||
let row = context
|
||||
.sql
|
||||
.query_row_optional(
|
||||
|
||||
Reference in New Issue
Block a user