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> {
return new Promise((resolve) => {
const server = net.createServer();
const socket = net.createConnection({ host: "127.0.0.1", port });
let resolved = false;
server.once("error", () => {
resolve(false);
const complete = (isAvailable: boolean): void => {
if (resolved) {
return;
}
resolved = true;
socket.destroy();
resolve(isAvailable);
};
socket.setTimeout(1000);
socket.once("connect", () => {
complete(false);
});
server.listen(port, "127.0.0.1", () => {
server.close(() => {
resolve(true);
socket.once("timeout", () => {
complete(true);
});
socket.once("error", (error: NodeJS.ErrnoException) => {
if (error.code === "ECONNREFUSED" || error.code === "EHOSTUNREACH") {
complete(true);
return;
}
complete(false);
});
});
}