Software /
code /
prosody
Comparison
plugins/mod_presence.lua @ 3181:1f73b3a960cf
mod_presence: Small refactoring.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Fri, 04 Jun 2010 18:24:09 +0500 |
parent | 3156:89b64966f511 |
child | 3182:a19dbb6446a0 |
comparison
equal
deleted
inserted
replaced
3179:99c5288a26e4 | 3181:1f73b3a960cf |
---|---|
217 rostermanager.roster_push(node, host, to_bare); | 217 rostermanager.roster_push(node, host, to_bare); |
218 end | 218 end |
219 core_route_stanza(origin, stanza); | 219 core_route_stanza(origin, stanza); |
220 end | 220 end |
221 stanza.attr.from, stanza.attr.to = st_from, st_to; | 221 stanza.attr.from, stanza.attr.to = st_from, st_to; |
222 return true; | |
222 end | 223 end |
223 | 224 |
224 function handle_inbound_presence_subscriptions_and_probes(origin, stanza, from_bare, to_bare) | 225 function handle_inbound_presence_subscriptions_and_probes(origin, stanza, from_bare, to_bare) |
225 local node, host = jid_split(to_bare); | 226 local node, host = jid_split(to_bare); |
226 local st_from, st_to = stanza.attr.from, stanza.attr.to; | 227 local st_from, st_to = stanza.attr.from, stanza.attr.to; |
266 sessionmanager.send_to_interested_resources(node, host, stanza); | 267 sessionmanager.send_to_interested_resources(node, host, stanza); |
267 rostermanager.roster_push(node, host, from_bare); | 268 rostermanager.roster_push(node, host, from_bare); |
268 end | 269 end |
269 end -- discard any other type | 270 end -- discard any other type |
270 stanza.attr.from, stanza.attr.to = st_from, st_to; | 271 stanza.attr.from, stanza.attr.to = st_from, st_to; |
272 return true; | |
271 end | 273 end |
272 | 274 |
273 local outbound_presence_handler = function(data) | 275 local outbound_presence_handler = function(data) |
274 -- outbound presence recieved | 276 -- outbound presence recieved |
275 local origin, stanza = data.origin, data.stanza; | 277 local origin, stanza = data.origin, data.stanza; |
276 | 278 |
277 local to = stanza.attr.to; | 279 local to = stanza.attr.to; |
278 if to then | 280 if to then |
279 local t = stanza.attr.type; | 281 local t = stanza.attr.type; |
280 if t ~= nil and t ~= "unavailable" and t ~= "error" then -- check for subscriptions and probes | 282 if t ~= nil and t ~= "unavailable" and t ~= "error" then -- check for subscriptions and probes |
281 handle_outbound_presence_subscriptions_and_probes(origin, stanza, jid_bare(stanza.attr.from), jid_bare(stanza.attr.to)); | 283 return handle_outbound_presence_subscriptions_and_probes(origin, stanza, jid_bare(stanza.attr.from), jid_bare(stanza.attr.to)); |
282 return true; | |
283 end | 284 end |
284 | 285 |
285 local to_bare = jid_bare(to); | 286 local to_bare = jid_bare(to); |
286 if not(origin.roster[to_bare] and (origin.roster[to_bare].subscription == "both" or origin.roster[to_bare].subscription == "from")) then -- directed presence | 287 if not(origin.roster[to_bare] and (origin.roster[to_bare].subscription == "both" or origin.roster[to_bare].subscription == "from")) then -- directed presence |
287 origin.directed = origin.directed or {}; | 288 origin.directed = origin.directed or {}; |
304 | 305 |
305 local to = stanza.attr.to; | 306 local to = stanza.attr.to; |
306 local t = stanza.attr.type; | 307 local t = stanza.attr.type; |
307 if to then | 308 if to then |
308 if t ~= nil and t ~= "unavailable" and t ~= "error" then -- check for subscriptions and probes sent to bare JID | 309 if t ~= nil and t ~= "unavailable" and t ~= "error" then -- check for subscriptions and probes sent to bare JID |
309 handle_inbound_presence_subscriptions_and_probes(origin, stanza, jid_bare(stanza.attr.from), jid_bare(stanza.attr.to)); | 310 return handle_inbound_presence_subscriptions_and_probes(origin, stanza, jid_bare(stanza.attr.from), jid_bare(stanza.attr.to)); |
310 return true; | |
311 end | 311 end |
312 | 312 |
313 local user = bare_sessions[to]; | 313 local user = bare_sessions[to]; |
314 if user then | 314 if user then |
315 for _, session in pairs(user.sessions) do | 315 for _, session in pairs(user.sessions) do |
327 -- inbound presence to full JID recieved | 327 -- inbound presence to full JID recieved |
328 local origin, stanza = data.origin, data.stanza; | 328 local origin, stanza = data.origin, data.stanza; |
329 | 329 |
330 local t = stanza.attr.type; | 330 local t = stanza.attr.type; |
331 if t ~= nil and t ~= "unavailable" and t ~= "error" then -- check for subscriptions and probes sent to full JID | 331 if t ~= nil and t ~= "unavailable" and t ~= "error" then -- check for subscriptions and probes sent to full JID |
332 handle_inbound_presence_subscriptions_and_probes(origin, stanza, jid_bare(stanza.attr.from), jid_bare(stanza.attr.to)); | 332 return handle_inbound_presence_subscriptions_and_probes(origin, stanza, jid_bare(stanza.attr.from), jid_bare(stanza.attr.to)); |
333 return true; | |
334 end | 333 end |
335 | 334 |
336 local session = full_sessions[stanza.attr.to]; | 335 local session = full_sessions[stanza.attr.to]; |
337 if session then | 336 if session then |
338 -- TODO fire post processing event | 337 -- TODO fire post processing event |