X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=util%2Fthrottle.lua;h=55e1d07b3f5a836b450fc65cf23a1c31b7363e49;hb=a0dc04ad05a5a436c967383e9ba06d5cc11e2e88;hp=82b0a67ba57903a8d184279b1afb2f10852d86c7;hpb=978be6e5a7b7929b66df8e6215274f87d616be75;p=prosody.git diff --git a/util/throttle.lua b/util/throttle.lua index 82b0a67b..55e1d07b 100644 --- a/util/throttle.lua +++ b/util/throttle.lua @@ -1,6 +1,7 @@ local gettime = require "socket".gettime; local setmetatable = setmetatable; +local floor = math.floor; module "throttle" @@ -11,7 +12,7 @@ function throttle:update() local newt = gettime(); local elapsed = newt - self.t; self.t = newt; - local balance = self.rate * elapsed + self.balance; + local balance = floor(self.rate * elapsed) + self.balance; if balance > self.max then self.balance = self.max; else @@ -34,7 +35,7 @@ function throttle:poll(cost, split) if split then self.balance = 0; end - return false, balance, (cost-self.balance); + return false, balance, (cost-balance); end end