Mercurial > prosody-hg
comparison plugins/muc/mod_muc.lua @ 9048:c58be87e62d0
MUC: Return 'gone' error for destroyed rooms in other cases than attempted join
Lock expiry -> Reset
Admin wants to join -> Reset
Still locked -> cancel, gone
Don't return error in response to an error
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 16 Jul 2018 12:19:19 +0200 |
| parents | 173c0e16e704 |
| children | 5870a0a6d4b6 |
comparison
equal
deleted
inserted
replaced
| 9047:ab3488ee3ca5 | 9048:c58be87e62d0 |
|---|---|
| 397 local origin, stanza = event.origin, event.stanza; | 397 local origin, stanza = event.origin, event.stanza; |
| 398 local room_jid = jid_bare(stanza.attr.to); | 398 local room_jid = jid_bare(stanza.attr.to); |
| 399 local room = get_room_from_jid(room_jid); | 399 local room = get_room_from_jid(room_jid); |
| 400 | 400 |
| 401 if room and room._data.destroyed then | 401 if room and room._data.destroyed then |
| 402 if stanza.attr.type == nil and stanza.name == "presence" then | 402 if room._data.locked < os.time() or (is_admin(stanza.attr.from) and stanza.name == "presence" and stanza.attr.type == nil) then |
| 403 if is_admin(stanza.attr.from) or room._data.locked < os.time() then | 403 -- Allow the room to be recreated by admin or after time has passed |
| 404 -- Allow the room to be recreated by admin or after time has passed | 404 delete_room(room); |
| 405 delete_room(room); | 405 room = nil; |
| 406 room = nil; | 406 else |
| 407 else | 407 if stanza.attr.type ~= "error" then |
| 408 local reply = st.error_reply(stanza, "cancel", "gone", room._data.reason) | 408 local reply = st.error_reply(stanza, "cancel", "gone", room._data.reason) |
| 409 if room._data.newjid then | 409 if room._data.newjid then |
| 410 local uri = "xmpp:"..room._data.newjid.."?join"; | 410 local uri = "xmpp:"..room._data.newjid.."?join"; |
| 411 reply:get_child("error"):child_with_name("gone"):text(uri); | 411 reply:get_child("error"):child_with_name("gone"):text(uri); |
| 412 end | 412 end |
| 413 event.origin.send(reply); | 413 event.origin.send(reply); |
| 414 return true; | |
| 415 end | 414 end |
| 415 return true; | |
| 416 end | 416 end |
| 417 end | 417 end |
| 418 | 418 |
| 419 if room == nil then | 419 if room == nil then |
| 420 -- Watch presence to create rooms | 420 -- Watch presence to create rooms |
