@ai-ecoverse/slicc-kernel 1.103.0 → 1.103.1
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/README.md +2 -2
- package/dist/index.js.map +2 -2
- package/dist/kernel-worker.js +118 -29
- package/dist/kernel-worker.js.map +4 -4
- package/dist/meta.js.map +2 -2
- package/dist/node-process-worker.js +29 -44
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +123 -34
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +44 -59
- package/dist/process-worker.js.map +3 -3
- package/dist/types/fs/meta.d.ts +1 -0
- package/dist/types/fs/types.d.ts +2 -0
- package/dist/types/kernel/socket-nodes.d.ts +20 -0
- package/dist/types/kernel/socket-syscalls.d.ts +2 -0
- package/dist/types/kernel/socket.d.ts +11 -5
- package/dist/types/realm/sync-fs-dispatch.d.ts +1 -0
- package/dist/types/realm/sync-fs-wire.d.ts +1 -0
- package/package.json +3 -3
package/dist/node.js
CHANGED
|
@@ -1549,6 +1549,7 @@ var KernelSocket = class _KernelSocket {
|
|
|
1549
1549
|
queue = [];
|
|
1550
1550
|
backlog = 0;
|
|
1551
1551
|
boundAt;
|
|
1552
|
+
named;
|
|
1552
1553
|
changes = new Changes();
|
|
1553
1554
|
room = new Changes();
|
|
1554
1555
|
options = /* @__PURE__ */ new Map();
|
|
@@ -1614,10 +1615,13 @@ var KernelSocket = class _KernelSocket {
|
|
|
1614
1615
|
for (const wait2 of waits) wait2.catch(() => void 0);
|
|
1615
1616
|
return pipeCall(() => Promise.race(waits));
|
|
1616
1617
|
}
|
|
1617
|
-
|
|
1618
|
+
bindable(addr) {
|
|
1618
1619
|
if (this.state !== "open" || this.local) throw new KernelError("EINVAL");
|
|
1619
1620
|
if (addr.family !== this.domain) throw new KernelError("EAFNOSUPPORT");
|
|
1620
|
-
|
|
1621
|
+
}
|
|
1622
|
+
bind(addr, kernel = false, name2) {
|
|
1623
|
+
this.bindable(addr);
|
|
1624
|
+
this.local = this.net.bind(this, addr, kernel, name2);
|
|
1621
1625
|
this.boundAt = this.local;
|
|
1622
1626
|
}
|
|
1623
1627
|
listen(backlog, cred) {
|
|
@@ -1655,7 +1659,7 @@ var KernelSocket = class _KernelSocket {
|
|
|
1655
1659
|
waitRoom(signal) {
|
|
1656
1660
|
return this.room.wait(signal);
|
|
1657
1661
|
}
|
|
1658
|
-
connect(addr, viaUplink = true, cred, stamp, waits = true) {
|
|
1662
|
+
connect(addr, viaUplink = true, cred, stamp, waits = true, name2) {
|
|
1659
1663
|
if (this.state === "connected") throw new KernelError("EISCONN");
|
|
1660
1664
|
if (this.state === "connecting") throw new KernelError("EALREADY");
|
|
1661
1665
|
if (this.state !== "open") throw new KernelError("EINVAL");
|
|
@@ -1663,7 +1667,7 @@ var KernelSocket = class _KernelSocket {
|
|
|
1663
1667
|
this.failed = void 0;
|
|
1664
1668
|
const route = viaUplink && addr.family === "inet" ? this.net.uplinkFor(addr.host) : void 0;
|
|
1665
1669
|
if (route) return this.dial(addr, route);
|
|
1666
|
-
const target = this.net.target(addr);
|
|
1670
|
+
const target = this.net.target(addr, name2);
|
|
1667
1671
|
if (!this.local) {
|
|
1668
1672
|
if (addr.family === "inet") {
|
|
1669
1673
|
this.local = this.net.bind(this, { family: "inet", host: "127.0.0.1", port: 0 });
|
|
@@ -1824,7 +1828,7 @@ var KernelSocket = class _KernelSocket {
|
|
|
1824
1828
|
this.readShut = true;
|
|
1825
1829
|
this.writeShut = true;
|
|
1826
1830
|
}
|
|
1827
|
-
if (this.boundAt) this.net.release(this.boundAt, this);
|
|
1831
|
+
if (this.boundAt) this.net.release(this.boundAt, this, this.named);
|
|
1828
1832
|
this.boundAt = void 0;
|
|
1829
1833
|
this.changes.wake();
|
|
1830
1834
|
}
|
|
@@ -1841,7 +1845,8 @@ var KernelSocket = class _KernelSocket {
|
|
|
1841
1845
|
function canonicalHost(host) {
|
|
1842
1846
|
return host === "0.0.0.0" ? "127.0.0.1" : host;
|
|
1843
1847
|
}
|
|
1844
|
-
function keyOf(addr) {
|
|
1848
|
+
function keyOf(addr, name2) {
|
|
1849
|
+
if (name2) return `node:${name2.key}`;
|
|
1845
1850
|
return addr.family === "inet" ? `inet:${addr.port}` : `unix:${addr.path}`;
|
|
1846
1851
|
}
|
|
1847
1852
|
var LOCAL_ONLY = new Routes();
|
|
@@ -1920,28 +1925,30 @@ var LoopbackNet = class {
|
|
|
1920
1925
|
void socket.connect(addr, false, void 0, void 0, false);
|
|
1921
1926
|
return socket;
|
|
1922
1927
|
}
|
|
1923
|
-
bind(socket, addr, kernel = false) {
|
|
1928
|
+
bind(socket, addr, kernel = false, name2) {
|
|
1924
1929
|
if (addr.family === "unix") {
|
|
1925
1930
|
if (addr.path === "") throw new KernelError("EINVAL");
|
|
1926
1931
|
} else this.bindable(addr, kernel);
|
|
1927
1932
|
const named = addr.family === "inet" && addr.port === 0 ? { ...addr, port: this.ephemeral() } : addr;
|
|
1928
|
-
const key = keyOf(named);
|
|
1929
|
-
if (this.bound.has(key)) throw new KernelError("EADDRINUSE");
|
|
1933
|
+
const key = keyOf(named, name2);
|
|
1934
|
+
if (this.bound.has(key) && !name2) throw new KernelError("EADDRINUSE");
|
|
1930
1935
|
this.bound.set(key, socket);
|
|
1936
|
+
socket.named = name2;
|
|
1931
1937
|
return named;
|
|
1932
1938
|
}
|
|
1933
|
-
release(addr, socket) {
|
|
1934
|
-
const key = keyOf(addr);
|
|
1939
|
+
release(addr, socket, name2) {
|
|
1940
|
+
const key = keyOf(addr, name2);
|
|
1935
1941
|
if (this.bound.get(key) === socket) this.bound.delete(key);
|
|
1936
1942
|
}
|
|
1937
|
-
target(addr) {
|
|
1943
|
+
target(addr, name2) {
|
|
1938
1944
|
if (addr.family === "inet" && !isLoopback(canonicalHost(addr.host))) {
|
|
1939
1945
|
throw new KernelError("ENETUNREACH");
|
|
1940
1946
|
}
|
|
1941
|
-
const key = keyOf(addr);
|
|
1947
|
+
const key = keyOf(addr, name2);
|
|
1942
1948
|
if (!this.bound.has(key)) this.activators.get(key)?.();
|
|
1943
1949
|
const socket = this.bound.get(key);
|
|
1944
1950
|
if (!socket?.listening) throw new KernelError("ECONNREFUSED");
|
|
1951
|
+
if (name2 && socket.named?.typed && !name2.typed) throw new KernelError("ECONNREFUSED");
|
|
1945
1952
|
return socket;
|
|
1946
1953
|
}
|
|
1947
1954
|
ephemeral() {
|
|
@@ -4016,6 +4023,7 @@ function view(target, overrides) {
|
|
|
4016
4023
|
var S_IFDIR = 16384;
|
|
4017
4024
|
var S_IFREG = 32768;
|
|
4018
4025
|
var S_IFLNK = 40960;
|
|
4026
|
+
var S_IFSOCK = 49152;
|
|
4019
4027
|
var PERM_MASK = 4095;
|
|
4020
4028
|
var S_ISGID3 = 1024;
|
|
4021
4029
|
var READ_ATTEMPTS = 3;
|
|
@@ -4279,7 +4287,8 @@ var OpfsFs = class {
|
|
|
4279
4287
|
return Object.keys(fields).length > 0 ? fields : void 0;
|
|
4280
4288
|
}
|
|
4281
4289
|
async stampNew(path, owner, directory) {
|
|
4282
|
-
const
|
|
4290
|
+
const owned4 = await this.newFields(path, owner, directory);
|
|
4291
|
+
const fields = owner?.socket && !directory ? { ...owned4, socket: true } : owned4;
|
|
4283
4292
|
if (fields) await this.meta.update(path, (entry) => ({ ...entry, path, ...fields }));
|
|
4284
4293
|
}
|
|
4285
4294
|
guarded = [];
|
|
@@ -4479,7 +4488,8 @@ var OpfsFs = class {
|
|
|
4479
4488
|
}
|
|
4480
4489
|
mode(path, directory, meta) {
|
|
4481
4490
|
const fallback = directory || EXECUTABLE.test(path) ? 493 : 420;
|
|
4482
|
-
|
|
4491
|
+
const type = directory ? S_IFDIR : meta?.socket ? S_IFSOCK : S_IFREG;
|
|
4492
|
+
return type | (meta?.mode ?? fallback);
|
|
4483
4493
|
}
|
|
4484
4494
|
id = crypto.randomUUID();
|
|
4485
4495
|
dirTimes = /* @__PURE__ */ new Map();
|
|
@@ -4558,10 +4568,12 @@ var OpfsFs = class {
|
|
|
4558
4568
|
const modified = file?.lastModified ?? 0;
|
|
4559
4569
|
const kept = meta?.mtimeMs !== void 0 && meta.mtimeFor === modified ? meta.mtimeMs : modified;
|
|
4560
4570
|
const mtime = touched ?? kept;
|
|
4571
|
+
const socket = !directory && meta?.socket === true;
|
|
4561
4572
|
return {
|
|
4562
|
-
isFile: !directory,
|
|
4573
|
+
isFile: !directory && !socket,
|
|
4563
4574
|
isDirectory: directory,
|
|
4564
4575
|
isSymbolicLink: false,
|
|
4576
|
+
...socket ? { isSocket: true } : {},
|
|
4565
4577
|
size: file?.size ?? 0,
|
|
4566
4578
|
mode: this.mode(path, directory, meta),
|
|
4567
4579
|
mtime: new Date(mtime),
|
|
@@ -9793,6 +9805,7 @@ function statJson(s) {
|
|
|
9793
9805
|
isDirectory: s.isDirectory,
|
|
9794
9806
|
isFile: s.isFile,
|
|
9795
9807
|
isSymbolicLink: s.isSymbolicLink,
|
|
9808
|
+
...s.isSocket ? { isSocket: true } : {},
|
|
9796
9809
|
size: s.size,
|
|
9797
9810
|
mode: s.mode,
|
|
9798
9811
|
mtimeMs: s.mtime.getTime(),
|
|
@@ -11177,7 +11190,7 @@ var PATH_OPS = new Set(SYNC_FS_OPS);
|
|
|
11177
11190
|
var EARLY_WHOLE_FILE = 64 * 1024;
|
|
11178
11191
|
|
|
11179
11192
|
// src/version.ts
|
|
11180
|
-
var KERNEL_VERSION = true ? "1.103.
|
|
11193
|
+
var KERNEL_VERSION = true ? "1.103.1" : "0.0.0-dev";
|
|
11181
11194
|
var OS_RELEASE = "6.0.0-slicc";
|
|
11182
11195
|
function procVersion() {
|
|
11183
11196
|
return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
|
|
@@ -14546,6 +14559,47 @@ async function semSyscall(req, proc) {
|
|
|
14546
14559
|
}
|
|
14547
14560
|
}
|
|
14548
14561
|
|
|
14562
|
+
// src/kernel/socket-nodes.ts
|
|
14563
|
+
function filePath(addr) {
|
|
14564
|
+
if (addr.family !== "unix" || addr.path === "" || addr.path.startsWith("\0")) return void 0;
|
|
14565
|
+
return normalizePath(addr.path);
|
|
14566
|
+
}
|
|
14567
|
+
function nameOf(st) {
|
|
14568
|
+
return { key: `${st.dev ?? 0}:${st.ino}`, typed: st.isSocket === true };
|
|
14569
|
+
}
|
|
14570
|
+
function codeOf3(err) {
|
|
14571
|
+
return err?.code;
|
|
14572
|
+
}
|
|
14573
|
+
function socketNames(deps) {
|
|
14574
|
+
const { fs } = deps;
|
|
14575
|
+
return {
|
|
14576
|
+
async make(path) {
|
|
14577
|
+
const g = deps.guard();
|
|
14578
|
+
if (g) await inParent(g, "bind", path);
|
|
14579
|
+
const owner = deps.owner();
|
|
14580
|
+
try {
|
|
14581
|
+
await deps.create(path, owner);
|
|
14582
|
+
} catch (err) {
|
|
14583
|
+
if (codeOf3(err) === "EEXIST") throw new KernelError("EADDRINUSE");
|
|
14584
|
+
throw err;
|
|
14585
|
+
}
|
|
14586
|
+
const remove = () => fs.rm(path, { file: true }).catch(() => void 0);
|
|
14587
|
+
try {
|
|
14588
|
+
if (!deps.owners && owner.mode !== void 0) await fs.chmod(path, owner.mode);
|
|
14589
|
+
return { ...nameOf(await fs.lstat(path)), remove };
|
|
14590
|
+
} catch (err) {
|
|
14591
|
+
await remove();
|
|
14592
|
+
throw err;
|
|
14593
|
+
}
|
|
14594
|
+
},
|
|
14595
|
+
async find(path) {
|
|
14596
|
+
const g = deps.guard();
|
|
14597
|
+
if (g) await need(g, "connect", path, W_OK, { directory: false });
|
|
14598
|
+
return nameOf(await fs.stat(path));
|
|
14599
|
+
}
|
|
14600
|
+
};
|
|
14601
|
+
}
|
|
14602
|
+
|
|
14549
14603
|
// src/kernel/net/datagram-wire.ts
|
|
14550
14604
|
function encodeReceived(got) {
|
|
14551
14605
|
const host = new TextEncoder().encode(got.host);
|
|
@@ -14612,7 +14666,7 @@ async function socketSyscall(req, proc) {
|
|
|
14612
14666
|
}
|
|
14613
14667
|
}
|
|
14614
14668
|
case "sock-bind":
|
|
14615
|
-
|
|
14669
|
+
await bind(proc, req.fd, req.addr);
|
|
14616
14670
|
return ok3();
|
|
14617
14671
|
case "sock-listen":
|
|
14618
14672
|
socketAt(fds, req.fd).listen(req.backlog, proc.cred?.());
|
|
@@ -14650,8 +14704,10 @@ async function connect(req, proc) {
|
|
|
14650
14704
|
target.connectTo(req.addr);
|
|
14651
14705
|
return ok3();
|
|
14652
14706
|
}
|
|
14707
|
+
const path = filePath(req.addr);
|
|
14708
|
+
const name2 = path !== void 0 ? await proc.names?.find(path) : void 0;
|
|
14653
14709
|
const stamp = proc.net.facadeAt(req.addr) && await proc.stamp?.();
|
|
14654
|
-
const dialing = target.connect(req.addr, true, proc.cred?.(), stamp || void 0);
|
|
14710
|
+
const dialing = target.connect(req.addr, true, proc.cred?.(), stamp || void 0, true, name2);
|
|
14655
14711
|
if (req.nonblock) {
|
|
14656
14712
|
dialing?.catch(() => void 0);
|
|
14657
14713
|
throw new KernelError("EINPROGRESS");
|
|
@@ -14659,6 +14715,22 @@ async function connect(req, proc) {
|
|
|
14659
14715
|
if (dialing !== void 0) await interruptible2(dialing, proc.blocking());
|
|
14660
14716
|
return ok3();
|
|
14661
14717
|
}
|
|
14718
|
+
async function bind(proc, fd, addr) {
|
|
14719
|
+
const socket = anySocketAt(proc.fds, fd);
|
|
14720
|
+
const path = filePath(addr);
|
|
14721
|
+
if (!(socket instanceof KernelSocket) || path === void 0 || !proc.names) {
|
|
14722
|
+
socket.bind(addr);
|
|
14723
|
+
return;
|
|
14724
|
+
}
|
|
14725
|
+
socket.bindable(addr);
|
|
14726
|
+
const name2 = await proc.names.make(path);
|
|
14727
|
+
try {
|
|
14728
|
+
socket.bind({ family: "unix", path }, false, name2);
|
|
14729
|
+
} catch (err) {
|
|
14730
|
+
await name2.remove();
|
|
14731
|
+
throw err;
|
|
14732
|
+
}
|
|
14733
|
+
}
|
|
14662
14734
|
async function datagram(req, proc) {
|
|
14663
14735
|
const dgram = dgramAt(proc.fds, req.fd);
|
|
14664
14736
|
if (req.op === "sock-sendto") {
|
|
@@ -15266,6 +15338,11 @@ function heldIo(fs, nodes, changed) {
|
|
|
15266
15338
|
const held = st.isFile ? await node(path) : void 0;
|
|
15267
15339
|
return held ? { ...st, size: await held.serial(() => held.size()) } : st;
|
|
15268
15340
|
},
|
|
15341
|
+
async lstat(path) {
|
|
15342
|
+
const st = await fs.lstat(path);
|
|
15343
|
+
const held = st.isFile && !st.isSymbolicLink ? await node(path) : void 0;
|
|
15344
|
+
return held ? { ...st, size: await held.serial(() => held.size()) } : st;
|
|
15345
|
+
},
|
|
15269
15346
|
async readFileBuffer(path) {
|
|
15270
15347
|
const held = await node(path);
|
|
15271
15348
|
if (!held) return fs.readFileBuffer(path);
|
|
@@ -16552,7 +16629,19 @@ var WasmProcess = class {
|
|
|
16552
16629
|
blocking: () => this.blockingSignal(cancelled),
|
|
16553
16630
|
resolve: (name2, family, blocking) => resolver.resolve(name2, family, blocking),
|
|
16554
16631
|
cred: () => ({ pid: this.pid, uid: this.cred.euid, gid: this.cred.egid }),
|
|
16555
|
-
stamp: () => this.connectorStamp()
|
|
16632
|
+
stamp: () => this.connectorStamp(),
|
|
16633
|
+
names: socketNames({
|
|
16634
|
+
fs: this.heldFs(),
|
|
16635
|
+
guard: () => this.guarded(),
|
|
16636
|
+
create: (path, owner) => this.nodes.createExclusive(path, owner),
|
|
16637
|
+
owner: () => ({
|
|
16638
|
+
uid: this.cred.euid,
|
|
16639
|
+
gid: this.cred.egid,
|
|
16640
|
+
mode: 511 & ~this.umask,
|
|
16641
|
+
socket: true
|
|
16642
|
+
}),
|
|
16643
|
+
owners: this.options.owners === true
|
|
16644
|
+
})
|
|
16556
16645
|
});
|
|
16557
16646
|
}
|
|
16558
16647
|
tty(fd) {
|
|
@@ -18626,8 +18715,8 @@ var FSA_CAPABILITIES = {
|
|
|
18626
18715
|
ranges: true,
|
|
18627
18716
|
sessions: true
|
|
18628
18717
|
};
|
|
18629
|
-
var
|
|
18630
|
-
var denied = (err) =>
|
|
18718
|
+
var codeOf4 = (err) => err?.code;
|
|
18719
|
+
var denied = (err) => codeOf4(err) === "EACCES" || err?.name === "NotAllowedError";
|
|
18631
18720
|
function attrOf(st) {
|
|
18632
18721
|
return {
|
|
18633
18722
|
kind: st.isDirectory ? "directory" : st.isSymbolicLink ? "symlink" : "file",
|
|
@@ -18649,7 +18738,7 @@ function kernelFsHandlers(fs) {
|
|
|
18649
18738
|
try {
|
|
18650
18739
|
return await fs.stat(path);
|
|
18651
18740
|
} catch (err) {
|
|
18652
|
-
if (
|
|
18741
|
+
if (codeOf4(err) === "ENOENT") return void 0;
|
|
18653
18742
|
throw err;
|
|
18654
18743
|
}
|
|
18655
18744
|
}
|
|
@@ -18842,7 +18931,7 @@ function parseFstab(text) {
|
|
|
18842
18931
|
});
|
|
18843
18932
|
return lines2;
|
|
18844
18933
|
}
|
|
18845
|
-
function
|
|
18934
|
+
function codeOf5(err) {
|
|
18846
18935
|
const code = err?.code;
|
|
18847
18936
|
return typeof code === "string" ? code : "EIO";
|
|
18848
18937
|
}
|
|
@@ -18880,18 +18969,18 @@ async function mountLine({ line, spec, invalid }, mount, signal, retries, discar
|
|
|
18880
18969
|
break;
|
|
18881
18970
|
} catch (err) {
|
|
18882
18971
|
failed3 = err;
|
|
18883
|
-
if (FINAL.has(
|
|
18972
|
+
if (FINAL.has(codeOf5(err)) || attempt === retries.length) break;
|
|
18884
18973
|
await wait(retries[attempt], signal);
|
|
18885
18974
|
}
|
|
18886
18975
|
}
|
|
18887
|
-
const code =
|
|
18976
|
+
const code = codeOf5(failed3);
|
|
18888
18977
|
return { line, target: spec.target, code, error: String(failed3?.message ?? code) };
|
|
18889
18978
|
}
|
|
18890
18979
|
|
|
18891
18980
|
// src/mount/hostfs.ts
|
|
18892
18981
|
var HOSTFS_IO = 16 * 1024 * 1024;
|
|
18893
|
-
var
|
|
18894
|
-
var unreachable = (err) =>
|
|
18982
|
+
var codeOf6 = (err) => err?.code;
|
|
18983
|
+
var unreachable = (err) => codeOf6(err) === "ENOTCONN";
|
|
18895
18984
|
function rel(path) {
|
|
18896
18985
|
return path.replace(/^\/+/, "");
|
|
18897
18986
|
}
|
|
@@ -19068,7 +19157,7 @@ function hostfsHandlers(current, againMs = RESTORE_AGAIN_MS) {
|
|
|
19068
19157
|
try {
|
|
19069
19158
|
return { opened: await opening2(), restore: void 0 };
|
|
19070
19159
|
} catch (err) {
|
|
19071
|
-
if (!flags2.write ||
|
|
19160
|
+
if (!flags2.write || codeOf6(err) !== "EACCES") throw err;
|
|
19072
19161
|
const was = await client.call("stat", { path: rel(path) });
|
|
19073
19162
|
const mode = was.mode ?? 0;
|
|
19074
19163
|
if (mode & 128) throw err;
|
|
@@ -19493,7 +19582,7 @@ var PortTransport = class {
|
|
|
19493
19582
|
}
|
|
19494
19583
|
};
|
|
19495
19584
|
var errorOf = (err) => ({
|
|
19496
|
-
code: typeof
|
|
19585
|
+
code: typeof codeOf6(err) === "string" ? codeOf6(err) : "EIO",
|
|
19497
19586
|
message: err?.message ?? String(err)
|
|
19498
19587
|
});
|
|
19499
19588
|
function serveHostfsPort(port, transport) {
|
|
@@ -22912,7 +23001,7 @@ import { connect as tls } from "node:tls";
|
|
|
22912
23001
|
var PROBE_MS = 3e3;
|
|
22913
23002
|
var PASSED = /* @__PURE__ */ new Set(["ECONNREFUSED", "EHOSTUNREACH", "ENETUNREACH", "ETIMEDOUT", "ECONNRESET"]);
|
|
22914
23003
|
var NO_NAME = /* @__PURE__ */ new Set(["ENOTFOUND", "EAI_AGAIN", "EAI_NONAME", "EAI_FAIL", "ENODATA"]);
|
|
22915
|
-
function
|
|
23004
|
+
function codeOf7(e) {
|
|
22916
23005
|
const code = e?.code;
|
|
22917
23006
|
return typeof code === "string" ? code : void 0;
|
|
22918
23007
|
}
|
|
@@ -22941,7 +23030,7 @@ function probe(secure, host, port, ms, signal) {
|
|
|
22941
23030
|
signal?.addEventListener("abort", stop, { once: true });
|
|
22942
23031
|
socket.once(secure ? "secureConnect" : "connect", () => done4("EPROTO"));
|
|
22943
23032
|
socket.once("error", (e) => {
|
|
22944
|
-
const code =
|
|
23033
|
+
const code = codeOf7(e) ?? "";
|
|
22945
23034
|
done4(PASSED.has(code) ? code : "EPROTO");
|
|
22946
23035
|
});
|
|
22947
23036
|
});
|
|
@@ -22956,7 +23045,7 @@ async function diagnose(url, ms = PROBE_MS, signal) {
|
|
|
22956
23045
|
await abortable(lookup3(host), signal);
|
|
22957
23046
|
} catch (e) {
|
|
22958
23047
|
if (signal?.aborted) throw signal.reason;
|
|
22959
|
-
return NO_NAME.has(
|
|
23048
|
+
return NO_NAME.has(codeOf7(e) ?? "") ? "EAI_NONAME" : void 0;
|
|
22960
23049
|
}
|
|
22961
23050
|
const code = await probe(secure, host, port, ms, signal);
|
|
22962
23051
|
signal?.throwIfAborted();
|
|
@@ -22975,7 +23064,7 @@ function diagnosing(transport, check = byDefault) {
|
|
|
22975
23064
|
try {
|
|
22976
23065
|
return await open(request);
|
|
22977
23066
|
} catch (e) {
|
|
22978
|
-
if (request.signal.aborted || !(e instanceof Error) ||
|
|
23067
|
+
if (request.signal.aborted || !(e instanceof Error) || codeOf7(e)) throw e;
|
|
22979
23068
|
const code = await abortable(
|
|
22980
23069
|
check(request.url, request.signal).catch(() => void 0),
|
|
22981
23070
|
request.signal
|