diff --git a/src/imap/mod.rs b/src/imap/mod.rs index 8fb864a6c..fb3eecda8 100644 --- a/src/imap/mod.rs +++ b/src/imap/mod.rs @@ -314,9 +314,15 @@ impl Imap { } async fn unsetup_handle(&mut self, context: &Context) { + // Close folder if messages should be expunged + if let Err(err) = self.close_folder(context).await { + warn!(context, "failed to close folder: {:?}", err); + } + + // Logout from the server if let Some(mut session) = self.session.take() { - if let Err(err) = session.close().await { - warn!(context, "failed to close connection: {:?}", err); + if let Err(err) = session.logout().await { + warn!(context, "failed to logout: {:?}", err); } } self.connected = false; diff --git a/src/imap/select_folder.rs b/src/imap/select_folder.rs index 35e2b4eb4..c1b2d3278 100644 --- a/src/imap/select_folder.rs +++ b/src/imap/select_folder.rs @@ -27,7 +27,7 @@ impl Imap { /// /// CLOSE is considerably faster than an EXPUNGE, see /// https://tools.ietf.org/html/rfc3501#section-6.4.2 - async fn close_folder(&mut self, context: &Context) -> Result<()> { + pub(super) async fn close_folder(&mut self, context: &Context) -> Result<()> { if let Some(ref folder) = self.config.selected_folder { info!(context, "Expunge messages in \"{}\".", folder);