Software /
code /
prosody
Diff
core/stanza_router.lua @ 106:f2a3d204a76a
Added: presence broadcast
Added: some additional message broadcast checks
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Tue, 14 Oct 2008 10:26:33 +0500 |
parent | 105:b099f0f80775 |
child | 113:9026fdad1531 |
line wrap: on
line diff
--- 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"));