X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=util%2Ftimer.lua;h=589feec25afb789882f0ce1167242bf8413d576e;hb=255e4034aa95afe6217d4224a267a703437b8ff1;hp=889a8c4c0669d7d032a6a2f7bd63c23d91d943e0;hpb=95e7946ec4ffaf822350f751678fbf2372d69ede;p=prosody.git diff --git a/util/timer.lua b/util/timer.lua index 889a8c4c..589feec2 100644 --- a/util/timer.lua +++ b/util/timer.lua @@ -1,4 +1,4 @@ --- Prosody IM v0.3 +-- Prosody IM v0.4 -- Copyright (C) 2008-2009 Matthew Wild -- Copyright (C) 2008-2009 Waqas Hussain -- @@ -10,7 +10,8 @@ local ns_addtimer = require "net.server".addtimer; local get_time = os.time; local t_insert = table.insert; -local ipairs = ipairs; +local t_remove = table.remove; +local ipairs, pairs = ipairs, pairs; local type = type; local data = {}; @@ -30,12 +31,15 @@ add_task = _add_task; ns_addtimer(function() local current_time = get_time(); - for _, d in ipairs(new_data) do - t_insert(data, d); + if #new_data > 0 then + for _, d in pairs(new_data) do + t_insert(data, d); + end + new_data = {}; end - new_data = {}; - for i = #data,1 do - local t, func = data[i][1], data[i][2]; + + for i, d in pairs(data) do + local t, func = d[1], d[2]; if t <= current_time then data[i] = nil; local r = func();