Add more logging and improve errors around folder selection

This commit is contained in:
link2xt
2023-01-04 15:55:54 +00:00
parent 754c7324f5
commit f69acaa13d
2 changed files with 13 additions and 5 deletions

View File

@@ -554,7 +554,10 @@ impl Imap {
folder: &str,
) -> Result<bool> {
let session = self.session.as_mut().context("no session")?;
let newly_selected = session.select_or_create_folder(context, folder).await?;
let newly_selected = session
.select_or_create_folder(context, folder)
.await
.with_context(|| format!("failed to select or create folder {}", folder))?;
let mailbox = session
.selected_mailbox
.as_mut()
@@ -564,8 +567,12 @@ impl Imap {
.uid_validity
.with_context(|| format!("No UIDVALIDITY for folder {}", folder))?;
let old_uid_validity = get_uidvalidity(context, folder).await?;
let old_uid_next = get_uid_next(context, folder).await?;
let old_uid_validity = get_uidvalidity(context, folder)
.await
.with_context(|| format!("failed to get old UID validity for folder {}", folder))?;
let old_uid_next = get_uid_next(context, folder)
.await
.with_context(|| format!("failed to get old UID NEXT for folder {}", folder))?;
if new_uid_validity == old_uid_validity {
let new_emails = if newly_selected == NewlySelected::No {

View File

@@ -109,13 +109,14 @@ impl ImapSession {
Ok(newly_selected) => Ok(newly_selected),
Err(err) => match err {
Error::NoFolder(..) => {
info!(context, "Failed to select folder {} because it does not exist, trying to create it.", folder);
self.create(folder).await.with_context(|| {
format!("Couldn't select folder ('{}'), then create() failed", err)
})?;
Ok(self.select_folder(context, Some(folder)).await?)
Ok(self.select_folder(context, Some(folder)).await.with_context(|| format!("failed to select newely created folder {}", folder))?)
}
_ => Err(err.into()),
_ => Err(err).with_context(|| format!("failed to select folder {} with error other than NO, not trying to create it", folder)),
},
}
}