fix: parse handshake timeout env strictly

This commit is contained in:
Peter Steinberger
2026-05-28 13:25:12 -04:00
parent ca87241289
commit d6c8e05de9
2 changed files with 24 additions and 6 deletions
+16
View File
@@ -94,6 +94,16 @@ describe("gateway handshake timeouts", () => {
VITEST: "1",
}),
).toBe(DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS);
expect(
getPreauthHandshakeTimeoutMsFromEnv({
OPENCLAW_HANDSHAKE_TIMEOUT_MS: "1e3",
}),
).toBe(DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS);
expect(
getPreauthHandshakeTimeoutMsFromEnv({
OPENCLAW_HANDSHAKE_TIMEOUT_MS: "0x10",
}),
).toBe(DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS);
});
test("getConnectChallengeTimeoutMsFromEnv reads OPENCLAW_CONNECT_CHALLENGE_TIMEOUT_MS", () => {
@@ -104,6 +114,12 @@ describe("gateway handshake timeouts", () => {
expect(
getConnectChallengeTimeoutMsFromEnv({ OPENCLAW_CONNECT_CHALLENGE_TIMEOUT_MS: "garbage" }),
).toBeUndefined();
expect(
getConnectChallengeTimeoutMsFromEnv({ OPENCLAW_CONNECT_CHALLENGE_TIMEOUT_MS: "1e3" }),
).toBeUndefined();
expect(
getConnectChallengeTimeoutMsFromEnv({ OPENCLAW_CONNECT_CHALLENGE_TIMEOUT_MS: "0x10" }),
).toBeUndefined();
});
test("resolveConnectChallengeTimeoutMs falls back to env override", () => {
+8 -6
View File
@@ -1,3 +1,5 @@
import { parseStrictPositiveInteger } from "../infra/parse-finite-number.js";
export const DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = 15_000;
export const MIN_CONNECT_CHALLENGE_TIMEOUT_MS = 250;
export const MAX_CONNECT_CHALLENGE_TIMEOUT_MS = DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS;
@@ -17,8 +19,8 @@ export function getConnectChallengeTimeoutMsFromEnv(
): number | undefined {
const raw = env.OPENCLAW_CONNECT_CHALLENGE_TIMEOUT_MS;
if (raw) {
const parsed = Number(raw);
if (Number.isFinite(parsed) && parsed > 0) {
const parsed = parseStrictPositiveInteger(raw);
if (parsed !== undefined) {
return parsed;
}
}
@@ -57,8 +59,8 @@ export function getPreauthHandshakeTimeoutMsFromEnv(env: NodeJS.ProcessEnv = pro
const configuredTimeout =
env.OPENCLAW_HANDSHAKE_TIMEOUT_MS || (env.VITEST && env.OPENCLAW_TEST_HANDSHAKE_TIMEOUT_MS);
if (configuredTimeout) {
const parsed = Number(configuredTimeout);
if (Number.isFinite(parsed) && parsed > 0) {
const parsed = parseStrictPositiveInteger(configuredTimeout);
if (parsed !== undefined) {
return parsed;
}
}
@@ -73,8 +75,8 @@ export function resolvePreauthHandshakeTimeoutMs(params?: {
const configuredTimeout =
env.OPENCLAW_HANDSHAKE_TIMEOUT_MS || (env.VITEST && env.OPENCLAW_TEST_HANDSHAKE_TIMEOUT_MS);
if (configuredTimeout) {
const parsed = Number(configuredTimeout);
if (Number.isFinite(parsed) && parsed > 0) {
const parsed = parseStrictPositiveInteger(configuredTimeout);
if (parsed !== undefined) {
return parsed;
}
}