Software /
code /
prosody
Comparison
plugins/mod_presence.lua @ 2593:06995c8bfe80
mod_presence: Don't depend on user being online when calculating top resources.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Fri, 12 Feb 2010 00:55:06 +0500 |
parent | 2592:3af266f7037f |
child | 2643:21eb99b06f4d |
comparison
equal
deleted
inserted
replaced
2592:3af266f7037f | 2593:06995c8bfe80 |
---|---|
53 end | 53 end |
54 end | 54 end |
55 end | 55 end |
56 return recipients; | 56 return recipients; |
57 end | 57 end |
58 local function recalc_resource_map(origin) | 58 local function recalc_resource_map(user) |
59 local user = hosts[origin.host].sessions[origin.username]; | 59 if user then |
60 user.top_resources = select_top_resources(user); | 60 user.top_resources = select_top_resources(user); |
61 if #user.top_resources == 0 then user.top_resources = nil; end | 61 if #user.top_resources == 0 then user.top_resources = nil; end |
62 end | |
62 end | 63 end |
63 | 64 |
64 function handle_normal_presence(origin, stanza, core_route_stanza) | 65 function handle_normal_presence(origin, stanza, core_route_stanza) |
65 local roster = origin.roster; | 66 local roster = origin.roster; |
66 local node, host = origin.username, origin.host; | 67 local node, host = origin.username, origin.host; |
115 end | 116 end |
116 if stanza.attr.type == "unavailable" then | 117 if stanza.attr.type == "unavailable" then |
117 origin.presence = nil; | 118 origin.presence = nil; |
118 if origin.priority then | 119 if origin.priority then |
119 origin.priority = nil; | 120 origin.priority = nil; |
120 recalc_resource_map(origin); | 121 recalc_resource_map(user); |
121 end | 122 end |
122 if origin.directed then | 123 if origin.directed then |
123 for jid in pairs(origin.directed) do | 124 for jid in pairs(origin.directed) do |
124 stanza.attr.to = jid; | 125 stanza.attr.to = jid; |
125 core_route_stanza(origin, stanza); | 126 core_route_stanza(origin, stanza); |
137 if priority > 127 then priority = 127 end | 138 if priority > 127 then priority = 127 end |
138 else priority = 0; end | 139 else priority = 0; end |
139 else priority = 0; end | 140 else priority = 0; end |
140 if origin.priority ~= priority then | 141 if origin.priority ~= priority then |
141 origin.priority = priority; | 142 origin.priority = priority; |
142 recalc_resource_map(origin); | 143 recalc_resource_map(user); |
143 end | 144 end |
144 end | 145 end |
145 stanza.attr.to = nil; -- reset it | 146 stanza.attr.to = nil; -- reset it |
146 end | 147 end |
147 | 148 |