Spaces:
Runtime error
Runtime error
| /** | |
| * Shared socket idle-timeout helper for the MITM proxy + HTTP-proxy listeners. | |
| * | |
| * Mirrors ProxyBridge's 60s relay idle timeout (ProxyBridge.c uses | |
| * poll(..., 60000) on every relay connection) so hung / half-open tunnels — | |
| * dropped Wi-Fi, dead upstreams that never send FIN/RST — cannot accumulate and | |
| * exhaust file descriptors, wedging the proxy under real agent traffic. (Gap 10.) | |
| */ | |
| import type { Socket } from "node:net"; | |
| function parseEnvNumber(value: string | undefined, fallback: number): number { | |
| if (!value) return fallback; | |
| const n = Number(value); | |
| return Number.isFinite(n) && n > 0 ? n : fallback; | |
| } | |
| export const MITM_IDLE_TIMEOUT_MS = parseEnvNumber(process.env.MITM_IDLE_TIMEOUT_MS, 60000); | |
| /** Destroy `socket` if it is idle (no I/O) for `ms` milliseconds. */ | |
| export function applyIdleTimeout(socket: Socket, ms: number = MITM_IDLE_TIMEOUT_MS): void { | |
| socket.setTimeout(ms, () => { | |
| socket.destroy(); | |
| }); | |
| } | |