# HG changeset patch # User daurnimator # Date 1393023160 18000 # Node ID c8a749298d514abf7fab04878481f435b047d566 # Parent 1d7e5d091980b3d0d4300c459c55618bf94fa8fc plugins/muc/muc.lib: Make use of return values to send service-unavailable errors diff -r 1d7e5d091980 -r c8a749298d51 plugins/muc/muc.lib.lua --- a/plugins/muc/muc.lib.lua Fri Feb 21 17:40:16 2014 -0500 +++ b/plugins/muc/muc.lib.lua Fri Feb 21 17:52:40 2014 -0500 @@ -982,9 +982,8 @@ elseif stanza.attr.type == "set" then return self:handle_owner_query_set_to_room(origin, stanza) end - elseif type == "set" or type == "get" then - origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); - return true; + else + return nil; end end @@ -1035,9 +1034,8 @@ self:handle_to_occupant(origin, stanza); stanza.attr.to = to; return true; - elseif type ~= "error" and type ~= "result" then - origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); - return true; + else + return nil; end end @@ -1090,9 +1088,7 @@ return true; end else - if type == "error" or type == "result" then return; end - origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); - return true; + return nil; end end @@ -1108,10 +1104,18 @@ function room_mt:handle_stanza(origin, stanza) local to_node, to_host, to_resource = jid_split(stanza.attr.to); + local handled if to_resource then - self:handle_to_occupant(origin, stanza); + handled = self:handle_to_occupant(origin, stanza); else - self:handle_to_room(origin, stanza); + handled = self:handle_to_room(origin, stanza); + end + + if not handled then + local type = stanza.attr.type + if stanza.name ~= "iq" or type == "get" or type == "set" then + origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); + end end end