Merge 0.10->trunk
[prosody.git] / util / events.lua
index 8e05072d55d958452638d9862dfcb1bc1853274b..40ca39131240c2f9c906021e3fe5a6886361a01d 100644 (file)
@@ -1,7 +1,7 @@
 -- Prosody IM
 -- Copyright (C) 2008-2010 Matthew Wild
 -- Copyright (C) 2008-2010 Waqas Hussain
--- 
+--
 -- This project is MIT/X11 licensed. Please see the
 -- COPYING file in the source package for more information.
 --
@@ -45,6 +45,9 @@ function new()
                if map then
                        map[handler] = nil;
                        handlers[event] = nil;
+                       if next(map) == nil then
+                               event_map[event] = nil;
+                       end
                end
        end;
        local function add_handlers(handlers)
@@ -57,11 +60,11 @@ function new()
                        remove_handler(event, handler);
                end
        end;
-       local function fire_event(event, ...)
-               local h = handlers[event];
+       local function fire_event(event_name, event_data)
+               local h = handlers[event_name];
                if h then
                        for i=1,#h do
-                               local ret = h[i](...);
+                               local ret = h[i](event_data);
                                if ret ~= nil then return ret; end
                        end
                end