You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
IDLE keepalives are not sent frequently enough on Android when the app is suspended #6533
However, this does not seem to happen because monotonic clock used almost everywhere does not advance when the app is suspended and boottime clocks which should be used instead are not available in Rust yet:
Same applies for any Linux system (not sure about all POSIX), this should be fixed not only for Android.
I think i've encountered this bug on my DeltaChat Desktop at least once.
Can we bring systime crate as a dependency or it would be better to write smth more minimal?
Or you'd prefer to wait for the implementation in rust std -> in tokio, and then use it in async-imap?
As for moving this to async-imap: maybe a better way is to add API to https://github.com/chatmail/core/blob/main/src/imap/idle.rs that can run without timeout at all and then interrupt it manually from chatmail/core? So we don't introduce a dependency into async-imap.
We also have the same problem with disappearing message timers (ephemeral.rs), could use better sleep/timeout in most places.
Activity
DarkCat09 commentedon Apr 12, 2026
Made a quick demo: https://git.dc09.xyz/DarkCat09/timers-suspend-test
Same applies for any Linux system (not sure about all POSIX), this should be fixed not only for Android.
I think i've encountered this bug on my DeltaChat Desktop at least once.
DarkCat09 commentedon Apr 12, 2026
Can we bring
systimecrate as a dependency or it would be better to write smth more minimal?Or you'd prefer to wait for the implementation in rust std -> in tokio, and then use it in async-imap?
DarkCat09 commentedon Apr 12, 2026
I suggest moving the issue to async-imap repo
link2xt commentedon Apr 15, 2026
systimelooks good, except that it does not have https://docs.rs/tokio/latest/tokio/time/fn.timeout.html so will have to usesleepand race against it instead, ideally in a customtimeoutfunction.As for moving this to async-imap: maybe a better way is to add API to https://github.com/chatmail/core/blob/main/src/imap/idle.rs that can run without timeout at all and then interrupt it manually from chatmail/core? So we don't introduce a dependency into async-imap.
We also have the same problem with disappearing message timers (ephemeral.rs), could use better
sleep/timeoutin most places.DarkCat09 commentedon May 2, 2026
I mean, when/if boottime gets implemented in Rust std, all networking libraries should switch to it, including our async-imap.
Also, if needed, i can write a more minimal version of systime as a separate crate and add a tokio-like
timeout()there