fix(web): cap provider timeout seconds · openclaw/openclaw@afa6d0c
steipete
·
2026-05-30
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +import { describe, expect, it } from "vitest"; |
| 2 | +import { MAX_TIMER_TIMEOUT_SECONDS } from "../../shared/number-coercion.js"; |
| 3 | +import { resolvePositiveTimeoutSeconds, resolveTimeoutSeconds } from "./web-shared.js"; |
| 4 | + |
| 5 | +describe("web shared timeout seconds", () => { |
| 6 | +it("caps timeoutSeconds at the shared timer-safe ceiling", () => { |
| 7 | +expect(resolveTimeoutSeconds(Number.MAX_SAFE_INTEGER, 30)).toBe(MAX_TIMER_TIMEOUT_SECONDS); |
| 8 | +expect(resolvePositiveTimeoutSeconds(Number.MAX_SAFE_INTEGER, 30)).toBe( |
| 9 | +MAX_TIMER_TIMEOUT_SECONDS, |
| 10 | +); |
| 11 | +}); |
| 12 | + |
| 13 | +it("preserves fallback and minimum behavior", () => { |
| 14 | +expect(resolveTimeoutSeconds(Number.NaN, 30)).toBe(30); |
| 15 | +expect(resolveTimeoutSeconds(0, 30)).toBe(1); |
| 16 | +expect(resolvePositiveTimeoutSeconds(0, 30)).toBe(30); |
| 17 | +expect(resolvePositiveTimeoutSeconds(1.9, 30)).toBe(1); |
| 18 | +}); |
| 19 | +}); |
| Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +import { MAX_TIMER_TIMEOUT_SECONDS } from "../../shared/number-coercion.js"; |
1 | 2 | import { normalizeLowercaseStringOrEmpty } from "../../shared/string-coerce.js"; |
2 | 3 | |
3 | 4 | export type CacheEntry<T> = { |
@@ -12,13 +13,13 @@ const DEFAULT_CACHE_MAX_ENTRIES = 100;
|
12 | 13 | |
13 | 14 | export function resolveTimeoutSeconds(value: unknown, fallback: number): number { |
14 | 15 | const parsed = typeof value === "number" && Number.isFinite(value) ? value : fallback; |
15 | | -return Math.max(1, Math.floor(parsed)); |
| 16 | +return Math.min(MAX_TIMER_TIMEOUT_SECONDS, Math.max(1, Math.floor(parsed))); |
16 | 17 | } |
17 | 18 | |
18 | 19 | export function resolvePositiveTimeoutSeconds(value: unknown, fallback: number): number { |
19 | 20 | const parsed = |
20 | 21 | typeof value === "number" && Number.isFinite(value) && value > 0 ? value : fallback; |
21 | | -return Math.max(1, Math.floor(parsed)); |
| 22 | +return Math.min(MAX_TIMER_TIMEOUT_SECONDS, Math.max(1, Math.floor(parsed))); |
22 | 23 | } |
23 | 24 | |
24 | 25 | export function resolveCacheTtlMs(value: unknown, fallbackMinutes: number): number { |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。