# HG changeset patch # User Waqas Hussain # Date 1223961993 -18000 # Node ID f2a3d204a76a55caa712dd7c4a784e970fbe445a # Parent b099f0f80775edbee0788ee55f6fc71a825e19d8 Added: presence broadcast Added: some additional message broadcast checks diff -r b099f0f80775 -r f2a3d204a76a core/stanza_router.lua --- a/core/stanza_router.lua Tue Oct 14 09:56:14 2008 +0500 +++ b/core/stanza_router.lua Tue Oct 14 10:26:33 2008 +0500 @@ -67,17 +67,33 @@ local user = host_session.sessions[node]; if user then local res = user.sessions[resource]; - -- TODO do something about presence broadcast if not res then -- if we get here, resource was not specified or was unavailable - for k in pairs(user.sessions) do - res = user.sessions[k]; - break; + if stanza.name == "presence" then + for k in pairs(user.sessions) do -- presence broadcast to all user resources + if user.sessions[k].full_jid then + stanza.attr.to = user.sessions[k].full_jid; + send(user.sessions[k], stanza); + end + end + else if stanza.name == "message" then -- select a resource to recieve message + for k in pairs(user.sessions) do + if user.sessions[k].full_jid then + res = user.sessions[k]; + break; + end + end + -- TODO find resource with greatest priority + else + error("IQs should't get here"); end - -- TODO find resource with greatest priority end - stanza.attr.to = res.full_jid; - send(res, stanza); -- Yay \o/ + if res then + stanza.attr.to = res.full_jid; + send(res, stanza); -- Yay \o/ + elseif stanza.name == "message" then + -- TODO return message error + end else -- user not found send(origin, st.error_reply(stanza, "cancel", "service-unavailable"));