Software /
code /
prosody
Comparison
plugins/muc/mod_muc.lua @ 3560:fb49b63e3fe2
MUC: Use events for hooking stanzas instead of the component stanza handler.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Thu, 04 Nov 2010 19:38:05 +0500 |
parent | 3510:711eb5bf94b4 |
child | 3575:bc3dfc00da5d |
comparison
equal
deleted
inserted
replaced
3559:0708d42ef0d4 | 3560:fb49b63e3fe2 |
---|---|
111 host_room:handle_stanza(origin, stanza); | 111 host_room:handle_stanza(origin, stanza); |
112 --origin.send(st.error_reply(stanza, "cancel", "service-unavailable", "The muc server doesn't deal with messages and presence directed at it")); | 112 --origin.send(st.error_reply(stanza, "cancel", "service-unavailable", "The muc server doesn't deal with messages and presence directed at it")); |
113 end | 113 end |
114 end | 114 end |
115 | 115 |
116 component = register_component(muc_host, function(origin, stanza) | 116 function stanza_handler(event) |
117 local origin, stanza = event.origin, event.stanza; | |
117 local to_node, to_host, to_resource = jid_split(stanza.attr.to); | 118 local to_node, to_host, to_resource = jid_split(stanza.attr.to); |
118 if to_node then | 119 if to_node then |
119 local bare = to_node.."@"..to_host; | 120 local bare = to_node.."@"..to_host; |
120 if to_host == muc_host or bare == muc_host then | 121 if to_host == muc_host or bare == muc_host then |
121 local room = rooms[bare]; | 122 local room = rooms[bare]; |
140 else --[[not for us?]] end | 141 else --[[not for us?]] end |
141 return; | 142 return; |
142 end | 143 end |
143 -- to the main muc domain | 144 -- to the main muc domain |
144 handle_to_domain(origin, stanza); | 145 handle_to_domain(origin, stanza); |
145 end); | 146 end |
147 module:hook("iq/bare", stanza_handler); | |
148 module:hook("message/bare", stanza_handler); | |
149 module:hook("presence/bare", stanza_handler); | |
150 module:hook("iq/full", stanza_handler); | |
151 module:hook("message/full", stanza_handler); | |
152 module:hook("presence/full", stanza_handler); | |
153 module:hook("iq/host", stanza_handler); | |
154 module:hook("message/host", stanza_handler); | |
155 module:hook("presence/host", stanza_handler); | |
156 | |
157 component = register_component(muc_host, function() end); | |
146 function component.send(stanza) -- FIXME do a generic fix | 158 function component.send(stanza) -- FIXME do a generic fix |
147 if stanza.attr.type == "result" or stanza.attr.type == "error" then | 159 if stanza.attr.type == "result" or stanza.attr.type == "error" then |
148 core_post_stanza(component, stanza); | 160 core_post_stanza(component, stanza); |
149 else error("component.send only supports result and error stanzas at the moment"); end | 161 else error("component.send only supports result and error stanzas at the moment"); end |
150 end | 162 end |