equal
deleted
inserted
replaced
475 function room_mt:handle_normal_presence(origin, stanza) |
475 function room_mt:handle_normal_presence(origin, stanza) |
476 local type = stanza.attr.type; |
476 local type = stanza.attr.type; |
477 local real_jid = stanza.attr.from; |
477 local real_jid = stanza.attr.from; |
478 local bare_jid = jid_bare(real_jid); |
478 local bare_jid = jid_bare(real_jid); |
479 local orig_occupant = self:get_occupant_by_real_jid(real_jid); |
479 local orig_occupant = self:get_occupant_by_real_jid(real_jid); |
|
480 local muc_x = stanza:get_child("x", "http://jabber.org/protocol/muc"); |
480 local is_first_dest_session; |
481 local is_first_dest_session; |
481 local dest_occupant; |
482 local dest_occupant; |
482 if type == "unavailable" then |
483 if type == "unavailable" then |
483 if orig_occupant == nil then return true; end -- Unavailable from someone not in the room |
484 if orig_occupant == nil then return true; end -- Unavailable from someone not in the room |
484 -- dest_occupant = nil |
485 -- dest_occupant = nil |
502 local iter, ob, last = orig_occupant:each_session(); |
503 local iter, ob, last = orig_occupant:each_session(); |
503 is_last_orig_session = iter(ob, iter(ob, last)) == nil; |
504 is_last_orig_session = iter(ob, iter(ob, last)) == nil; |
504 end |
505 end |
505 |
506 |
506 -- TODO Handle these cases sensibly |
507 -- TODO Handle these cases sensibly |
507 local muc_x = stanza:get_child("x", "http://jabber.org/protocol/muc"); |
|
508 if orig_occupant == nil and not muc_x then |
508 if orig_occupant == nil and not muc_x then |
509 module:log("debug", "Join without <x>, possibly desynced"); |
509 module:log("debug", "Join without <x>, possibly desynced"); |
510 elseif orig_occupant ~= nil and muc_x then |
510 elseif orig_occupant ~= nil and muc_x then |
511 module:log("debug", "Presence update with <x>, possibly desynced"); |
511 module:log("debug", "Presence update with <x>, possibly desynced"); |
512 end |
512 end |