fix(nodecg): avoid intrusive port probe that can break startup on Windows (#26)

This commit is contained in:
Pandipipas
2026-02-23 22:16:31 +01:00
committed by GitHub
parent 8006586e11
commit 1f7b05e703
+26 -6
View File
@@ -248,16 +248,36 @@ function hasReadWriteAccess(candidatePath: string): boolean {
function probePortAvailable(port: number): Promise<boolean> { function probePortAvailable(port: number): Promise<boolean> {
return new Promise((resolve) => { return new Promise((resolve) => {
const server = net.createServer(); const socket = net.createConnection({ host: "127.0.0.1", port });
let resolved = false;
server.once("error", () => { const complete = (isAvailable: boolean): void => {
resolve(false); if (resolved) {
return;
}
resolved = true;
socket.destroy();
resolve(isAvailable);
};
socket.setTimeout(1000);
socket.once("connect", () => {
complete(false);
}); });
server.listen(port, "127.0.0.1", () => { socket.once("timeout", () => {
server.close(() => { complete(true);
resolve(true);
}); });
socket.once("error", (error: NodeJS.ErrnoException) => {
if (error.code === "ECONNREFUSED" || error.code === "EHOSTUNREACH") {
complete(true);
return;
}
complete(false);
}); });
}); });
} }