mirror of
https://github.com/karatektus/pl_mail.git
synced 2026-10-25 01:54:10 +00:00
The library says "empty response" for a read that timed out and for a connection the server has closed, and the IDLE loop took both for a quiet mailbox. On a closed connection every read returns empty at once, so the loop never blocked again: a core per folder until the 29-minute re-issue. Lark and QQ close idle sessions within minutes, so for them this was every session (#94: 85 minutes of CPU in three hours for one inbox, against half a second for a Gmail one). connectionEnded() tells them apart by the stream being at end-of-file, or by the read having come back in under a second when a quiet one blocks for thirty — a TLS stream does not always report end-of-file. A connection that lived a minute or more is reconnected at once and counts as no failure. One lost sooner is thrown to the retry ladder, so a server that accepts IDLE and hangs up cannot become a reconnect loop in place of a read loop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>