Software /
code /
prosody
Comparison
plugins/muc/muc.lib.lua @ 8913:560419b759c8
MUC: Remove support for GC 1.0 during room creation
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 09 Mar 2018 19:02:10 +0100 |
parent | 8912:43806beda970 |
child | 8914:e9acb928c637 |
comparison
equal
deleted
inserted
replaced
8912:43806beda970 | 8913:560419b759c8 |
---|---|
376 module:fire_event("muc-occupant-left", {room = self; nick = occupant.nick; occupant = occupant;}); | 376 module:fire_event("muc-occupant-left", {room = self; nick = occupant.nick; occupant = occupant;}); |
377 end | 377 end |
378 return true; | 378 return true; |
379 end | 379 end |
380 | 380 |
381 if not module:get_option_boolean("muc_compat_create", true) then | |
382 module:hook("muc-room-pre-create", function(event) | |
383 local origin, stanza = event.origin, event.stanza; | |
384 if not stanza:get_child("x", "http://jabber.org/protocol/muc") then | |
385 origin.send(st.error_reply(stanza, "cancel", "item-not-found")); | |
386 return true; | |
387 end | |
388 end, -1); | |
389 end | |
390 | |
391 -- Give the room creator owner affiliation | 381 -- Give the room creator owner affiliation |
392 module:hook("muc-room-pre-create", function(event) | 382 module:hook("muc-room-pre-create", function(event) |
393 event.room:set_affiliation(true, jid_bare(event.stanza.attr.from), "owner"); | 383 event.room:set_affiliation(true, jid_bare(event.stanza.attr.from), "owner"); |
394 end, -1); | 384 end, -1); |
395 | 385 |
404 return true; | 394 return true; |
405 end | 395 end |
406 end, -10); | 396 end, -10); |
407 | 397 |
408 function room_mt:handle_first_presence(origin, stanza) | 398 function room_mt:handle_first_presence(origin, stanza) |
399 if not stanza:get_child("x", "http://jabber.org/protocol/muc") then | |
400 module:log("debug", "Room creation without <x>, possibly desynced"); | |
401 | |
402 origin.send(st.error_reply(stanza, "cancel", "item-not-found")); | |
403 return true; | |
404 end | |
405 | |
409 local real_jid = stanza.attr.from; | 406 local real_jid = stanza.attr.from; |
410 local dest_jid = stanza.attr.to; | 407 local dest_jid = stanza.attr.to; |
411 local bare_jid = jid_bare(real_jid); | 408 local bare_jid = jid_bare(real_jid); |
412 if module:fire_event("muc-room-pre-create", { | 409 if module:fire_event("muc-room-pre-create", { |
413 room = self; | 410 room = self; |
414 origin = origin; | 411 origin = origin; |
415 stanza = stanza; | 412 stanza = stanza; |
416 }) then return true; end | 413 }) then return true; end |
417 local is_first_dest_session = true; | 414 local is_first_dest_session = true; |
418 local dest_occupant = self:new_occupant(bare_jid, dest_jid); | 415 local dest_occupant = self:new_occupant(bare_jid, dest_jid); |
419 | |
420 -- TODO Handle this case sensibly | |
421 if not stanza:get_child("x", "http://jabber.org/protocol/muc") then | |
422 module:log("debug", "Room creation without <x>, possibly desynced"); | |
423 end | |
424 | 416 |
425 local orig_nick = dest_occupant.nick; | 417 local orig_nick = dest_occupant.nick; |
426 if module:fire_event("muc-occupant-pre-join", { | 418 if module:fire_event("muc-occupant-pre-join", { |
427 room = self; | 419 room = self; |
428 origin = origin; | 420 origin = origin; |