@bobfrankston/rmfmail 1.1.244 → 1.1.246
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/app.bundle.js +24 -7
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +42 -12
- package/client/app.js.map +1 -1
- package/client/app.ts +44 -13
- package/package.json +3 -3
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +15 -0
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +12 -0
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
|
@@ -2870,6 +2870,15 @@ export class ImapManager extends EventEmitter {
|
|
|
2870
2870
|
|
|
2871
2871
|
if (!this.configs.has(accountId)) return null;
|
|
2872
2872
|
|
|
2873
|
+
// Back off a body that recently hung / failed. One un-fetchable message
|
|
2874
|
+
// (the server stalls on its BODY[] — Bob 2026-06-12, UID 4966060) was
|
|
2875
|
+
// being re-fetched on every view + prefetch tick, each attempt hanging
|
|
2876
|
+
// ~90s and tying up the ops queue, so user actions (delete, open) were
|
|
2877
|
+
// delayed until the client timed out. The 5min→12h backoff (shared with
|
|
2878
|
+
// prefetch via isPrefetchEmpty) stops the tight re-fetch loop; the body
|
|
2879
|
+
// simply shows as unavailable until the backoff lapses and one retry runs.
|
|
2880
|
+
if (this.isPrefetchEmpty(accountId, folderId, uid)) return null;
|
|
2881
|
+
|
|
2873
2882
|
const folder = this.db.getFolders(accountId).find(f => f.id === folderId);
|
|
2874
2883
|
if (!folder) return null;
|
|
2875
2884
|
|
|
@@ -2896,6 +2905,9 @@ export class ImapManager extends EventEmitter {
|
|
|
2896
2905
|
} catch (e: any) {
|
|
2897
2906
|
if (e?.isNotFound) throw e;
|
|
2898
2907
|
console.error(` Body fetch error (${accountId}/${uid}): ${e?.message || e}`);
|
|
2908
|
+
// Record so the next view / prefetch backs off instead of
|
|
2909
|
+
// re-attempting a hanging fetch and re-congesting the queue.
|
|
2910
|
+
try { this.markPrefetchEmpty(accountId, folderId, uid); } catch { /* */ }
|
|
2899
2911
|
return null;
|
|
2900
2912
|
}
|
|
2901
2913
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/mailx-imap",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.90",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bobfrankston/mailx-imap",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.90",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@bobfrankston/iflow-direct": "^0.1.27",
|