Mercurial > prosody-hg
comparison util/timer.lua @ 8762:2f8523bf7ff2
util.timer: Ensure we don't try to schedule negative timeouts (which rightly upset libevent). Fixes #1135
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 29 Apr 2018 21:43:39 +0100 |
| parents | 2548111e71d6 |
| children | 2e6f7ab97794 |
comparison
equal
deleted
inserted
replaced
| 8761:b6e193e33145 | 8762:2f8523bf7ff2 |
|---|---|
| 13 local async = require "util.async"; | 13 local async = require "util.async"; |
| 14 local type = type; | 14 local type = type; |
| 15 local debug_traceback = debug.traceback; | 15 local debug_traceback = debug.traceback; |
| 16 local tostring = tostring; | 16 local tostring = tostring; |
| 17 local xpcall = xpcall; | 17 local xpcall = xpcall; |
| 18 local math_max = math.max; | |
| 18 | 19 |
| 19 local _ENV = nil; | 20 local _ENV = nil; |
| 20 -- luacheck: std none | 21 -- luacheck: std none |
| 21 | 22 |
| 22 local _add_task = server.add_task; | 23 local _add_task = server.add_task; |
| 85 local peek = h:peek(); | 86 local peek = h:peek(); |
| 86 if peek ~= next_time and _server_timer then | 87 if peek ~= next_time and _server_timer then |
| 87 next_time = peek; | 88 next_time = peek; |
| 88 _server_timer:close(); | 89 _server_timer:close(); |
| 89 if next_time ~= nil then | 90 if next_time ~= nil then |
| 90 _server_timer = _add_task(next_time - get_time(), _on_timer); | 91 _server_timer = _add_task(math_max(next_time - get_time(), 0), _on_timer); |
| 91 end | 92 end |
| 92 end | 93 end |
| 93 return result, item, result_sync; | 94 return result, item, result_sync; |
| 94 end | 95 end |
| 95 local function reschedule(id, delay) | 96 local function reschedule(id, delay) |
