mirror of
https://github.com/chatmail/core.git
synced 2026-05-09 01:46:30 +03:00
fix recovering offline/lost connection situations
This commit is contained in:
@@ -113,12 +113,13 @@ impl Imap {
|
|||||||
// in this case, we're waiting for a configure job (and an interrupt).
|
// in this case, we're waiting for a configure job (and an interrupt).
|
||||||
|
|
||||||
let fake_idle_start_time = SystemTime::now();
|
let fake_idle_start_time = SystemTime::now();
|
||||||
info!(context, "IMAP-fake-IDLEing...");
|
|
||||||
|
|
||||||
// Do not poll, just wait for an interrupt when no folder is passed in.
|
// Do not poll, just wait for an interrupt when no folder is passed in.
|
||||||
if watch_folder.is_none() {
|
if watch_folder.is_none() {
|
||||||
|
info!(context, "IMAP-fake-IDLE: no folder, waiting for interrupt");
|
||||||
return self.idle_interrupt.recv().await.unwrap_or_default();
|
return self.idle_interrupt.recv().await.unwrap_or_default();
|
||||||
}
|
}
|
||||||
|
info!(context, "IMAP-fake-IDLEing folder={:?}", watch_folder);
|
||||||
|
|
||||||
// check every minute if there are new messages
|
// check every minute if there are new messages
|
||||||
// TODO: grow sleep durations / make them more flexible
|
// TODO: grow sleep durations / make them more flexible
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ async fn fetch_idle(ctx: &Context, connection: &mut Imap, folder: Config) -> Int
|
|||||||
// connect and fake idle if unable to connect
|
// connect and fake idle if unable to connect
|
||||||
if let Err(err) = connection.connect_configured(&ctx).await {
|
if let Err(err) = connection.connect_configured(&ctx).await {
|
||||||
warn!(ctx, "imap connection failed: {}", err);
|
warn!(ctx, "imap connection failed: {}", err);
|
||||||
return connection.fake_idle(&ctx, None).await;
|
return connection.fake_idle(&ctx, Some(watch_folder)).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
// fetch
|
// fetch
|
||||||
|
|||||||
Reference in New Issue
Block a user