diff options
author | Matthew Wild <mwild1@gmail.com> | 2010-05-21 19:45:33 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2010-05-21 19:45:33 +0100 |
commit | 7b5c488942ef7545fca718153cb83adcf1d18a1f (patch) | |
tree | ca92b419c05d50ee628a33316bdffccc2e3770a3 | |
parent | a7048b7c938909b1fc915823b2963ae0dfcf1203 (diff) | |
parent | 017a5331582d4dbdf0512547491c0a680db3afb2 (diff) | |
download | prosody-7b5c488942ef7545fca718153cb83adcf1d18a1f.tar.gz prosody-7b5c488942ef7545fca718153cb83adcf1d18a1f.zip |
Merge with backout
-rw-r--r-- | plugins/mod_presence.lua | 41 |
1 files changed, 11 insertions, 30 deletions
diff --git a/plugins/mod_presence.lua b/plugins/mod_presence.lua index 5ad3bfdf..108ab0d3 100644 --- a/plugins/mod_presence.lua +++ b/plugins/mod_presence.lua @@ -38,42 +38,23 @@ function core_route_stanza(origin, stanza) _core_route_stanza(origin, stanza); end -local select_top_resources; -local bare_message_delivery_policy = module:get_option("bare_message_delivery_policy") or "priority"; -if bare_message_delivery_policy == "broadcast" then - function select_top_resources(user) - local recipients = {}; - for _, session in pairs(user.sessions) do -- find resources with non-negative priority +local function select_top_resources(user) + local priority = 0; + local recipients = {}; + for _, session in pairs(user.sessions) do -- find resource with greatest priority + if session.presence then + -- TODO check active privacy list for session local p = session.priority; - if p and p >= 0 then + if p > priority then + priority = p; + recipients = {session}; + elseif p == priority then t_insert(recipients, session); end end - return recipients; - end -else - if bare_message_delivery_policy ~= "priority" then - module:log("warn", "Invalid value for config option bare_message_delivery_policy"); - end - function select_top_resources(user) - local priority = 0; - local recipients = {}; - for _, session in pairs(user.sessions) do -- find resource with greatest priority - if session.presence then - -- TODO check active privacy list for session - local p = session.priority; - if p > priority then - priority = p; - recipients = {session}; - elseif p == priority then - t_insert(recipients, session); - end - end - end - return recipients; end + return recipients; end - local function recalc_resource_map(user) if user then user.top_resources = select_top_resources(user); |