taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 71258f630516c4b5f83a731aa9b379583703f99f
parent 38b1fe1fe4c44205e270c005b9ad8fb07106ccb5
Author: Florian Dold <florian@dold.me>
Date:   Tue, 28 Oct 2025 18:38:43 +0100

util: fix logic bug in request throttler

Diffstat:
Mpackages/taler-util/src/RequestThrottler.ts | 10+++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/packages/taler-util/src/RequestThrottler.ts b/packages/taler-util/src/RequestThrottler.ts @@ -58,17 +58,21 @@ class OriginState { if (d.d_ms === "forever") { throw Error("assertion failed"); } + // Be lazy and avoid rounding issues. + if (d.d_ms < 1000 / MAX_PER_SECOND) { + return; + } this.tokensSecond = Math.min( MAX_PER_SECOND, - this.tokensSecond + d.d_ms / 1000, + this.tokensSecond + (d.d_ms / 1000) * MAX_PER_SECOND, ); this.tokensMinute = Math.min( MAX_PER_MINUTE, - this.tokensMinute + d.d_ms / 1000 / 60, + this.tokensMinute + (d.d_ms / 1000 / 60) * MAX_PER_MINUTE, ); this.tokensHour = Math.min( MAX_PER_HOUR, - this.tokensHour + d.d_ms / 1000 / 60 / 60, + this.tokensHour + (d.d_ms / 1000 / 60 / 60) * MAX_PER_HOUR, ); this.lastUpdate = now; }