0.3->0.4
[prosody.git] / util / timer.lua
index 889a8c4c0669d7d032a6a2f7bd63c23d91d943e0..589feec25afb789882f0ce1167242bf8413d576e 100644 (file)
@@ -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();