@bobfrankston/mailx-imap 0.1.96 → 0.1.97
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/index.js +15 -23
- package/package.json +5 -5
package/index.js
CHANGED
|
@@ -3430,27 +3430,19 @@ export class ImapManager extends EventEmitter {
|
|
|
3430
3430
|
}
|
|
3431
3431
|
}
|
|
3432
3432
|
catch (e) {
|
|
3433
|
-
|
|
3434
|
-
// "IMAP command leaked into response stream"
|
|
3435
|
-
//
|
|
3436
|
-
//
|
|
3437
|
-
//
|
|
3438
|
-
//
|
|
3439
|
-
//
|
|
3440
|
-
//
|
|
3441
|
-
//
|
|
3442
|
-
//
|
|
3443
|
-
//
|
|
3444
|
-
//
|
|
3445
|
-
// (
|
|
3446
|
-
// retries next tick on a clean connection.
|
|
3447
|
-
if (/command leaked|corrupt body|desync/i.test(emsg)) {
|
|
3448
|
-
console.error(` [prefetch] ${accountId}/${uid}: connection desync — discarding socket to resync: ${emsg.slice(0, 90)}`);
|
|
3449
|
-
throw new Error(`imap-desync: ${emsg.slice(0, 80)}`);
|
|
3450
|
-
}
|
|
3451
|
-
console.error(` [prefetch] ${accountId}/${uid}: store write failed: ${emsg}`);
|
|
3452
|
-
// Genuine poison body (not a desync): back off
|
|
3453
|
-
// 5m→30m→2h→12h so it isn't re-fetched on a loop.
|
|
3433
|
+
console.error(` [prefetch] ${accountId}/${uid}: store write failed: ${e?.message || e}`);
|
|
3434
|
+
// "IMAP command leaked into response stream" is NOT
|
|
3435
|
+
// a live connection desync — the DESYNC CAPTURE
|
|
3436
|
+
// (2026-06-16) proved the parser is perfectly aligned
|
|
3437
|
+
// (server announces BODY[] {N}, we read exactly N).
|
|
3438
|
+
// It's a message whose body is PERMANENTLY corrupt on
|
|
3439
|
+
// the server (mailx APPENDed it with a leaked command
|
|
3440
|
+
// prepended in some past session). Discarding the
|
|
3441
|
+
// connection (my 1.2.12 mistake) just re-fetches the
|
|
3442
|
+
// same bad message and thrashes the socket — which
|
|
3443
|
+
// disrupted the SHARED slow-lane connection that sync
|
|
3444
|
+
// uses. Correct handling: back this one message off
|
|
3445
|
+
// (5m→30m→2h→12h) and leave the connection alone.
|
|
3454
3446
|
this.markPrefetchEmpty(accountId, folderId, uid);
|
|
3455
3447
|
}
|
|
3456
3448
|
})());
|
|
@@ -3496,9 +3488,9 @@ export class ImapManager extends EventEmitter {
|
|
|
3496
3488
|
// (markPrefetchEmpty is per-message poison only) —
|
|
3497
3489
|
// they retry next tick. Genuine per-body errors are
|
|
3498
3490
|
// handled per-UID above and never reach here.
|
|
3499
|
-
const dead = /not connected|ETIMEDOUT|ECONNRESET|ECONNREFUSED|EPIPE|socket|connection (closed|reset|lost)|disconnect
|
|
3491
|
+
const dead = /not connected|ETIMEDOUT|ECONNRESET|ECONNREFUSED|EPIPE|socket|connection (closed|reset|lost)|disconnect/i.test(msg);
|
|
3500
3492
|
if (dead) {
|
|
3501
|
-
console.log(` [prefetch] ${accountId}/${folder.path}: connection down
|
|
3493
|
+
console.log(` [prefetch] ${accountId}/${folder.path}: connection down — deferring rest to next tick (fresh socket)`);
|
|
3502
3494
|
break;
|
|
3503
3495
|
}
|
|
3504
3496
|
if (counters.errors >= ERROR_BUDGET)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/mailx-imap",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.97",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@bobfrankston/mailx-types": "^0.1.19",
|
|
13
13
|
"@bobfrankston/mailx-settings": "^0.1.28",
|
|
14
|
-
"@bobfrankston/mailx-store": "^0.1.
|
|
15
|
-
"@bobfrankston/iflow-direct": "^0.1.
|
|
14
|
+
"@bobfrankston/mailx-store": "^0.1.51",
|
|
15
|
+
"@bobfrankston/iflow-direct": "^0.1.54",
|
|
16
16
|
"@bobfrankston/tcp-transport": "^0.1.7",
|
|
17
17
|
"@bobfrankston/smtp-direct": "^0.1.9",
|
|
18
18
|
"@bobfrankston/mailx-sync": "^0.1.22",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@bobfrankston/mailx-types": "^0.1.19",
|
|
41
41
|
"@bobfrankston/mailx-settings": "^0.1.28",
|
|
42
|
-
"@bobfrankston/mailx-store": "^0.1.
|
|
43
|
-
"@bobfrankston/iflow-direct": "^0.1.
|
|
42
|
+
"@bobfrankston/mailx-store": "^0.1.51",
|
|
43
|
+
"@bobfrankston/iflow-direct": "^0.1.54",
|
|
44
44
|
"@bobfrankston/tcp-transport": "^0.1.7",
|
|
45
45
|
"@bobfrankston/smtp-direct": "^0.1.9",
|
|
46
46
|
"@bobfrankston/mailx-sync": "^0.1.22",
|