diff -r 7efedc96352a -r bb5ac5976a97 core/rostermanager.lua --- a/core/rostermanager.lua Wed Oct 22 21:18:50 2008 +0500 +++ b/core/rostermanager.lua Wed Oct 22 21:20:07 2008 +0500 @@ -7,6 +7,7 @@ local setmetatable = setmetatable; local format = string.format; local loadfile, setfenv, pcall = loadfile, setfenv, pcall; +local pairs, ipairs = pairs, ipairs; local hosts = hosts; @@ -14,7 +15,6 @@ local datamanager = datamanager; local st = require "util.stanza"; -local send = require "core.sessionmanager".send_to_session; module "rostermanager" @@ -66,19 +66,19 @@ stanza:tag("query", {xmlns = "jabber:iq:roster"}); if item then stanza:tag("item", {jid = jid, subscription = item.subscription, name = item.name}); + for group in pairs(item.groups) do + stanza:tag("group"):text(group):up(); + end else stanza:tag("item", {jid = jid, subscription = "remove"}); end - for group in item.groups do - stanza:tag("group"):text(group):up(); - end stanza:up(); stanza:up(); -- stanza ready - for _, session in ipairs(hosts[host].sessions[username].sessions) do + for _, session in pairs(hosts[host].sessions[username].sessions) do if session.full_jid then -- FIXME do we need to set stanza.attr.to? - send(session, stanza); + session.send(stanza); end end end @@ -98,7 +98,7 @@ function save_roster(username, host) if hosts[host] and hosts[host].sessions[username] and hosts[host].sessions[username].roster then - return datamanager.save(username, host, "roster", hosts[host].sessions[username].roster); + return datamanager.store(username, host, "roster", hosts[host].sessions[username].roster); end return nil; end