Comparison

plugins/mod_presence.lua @ 4139:eef75a0c85e3

mod_presence: Bounce errors for invalid presence types (thanks nolan/Astro)
author Matthew Wild <mwild1@gmail.com>
date Thu, 10 Feb 2011 21:09:20 +0000
parent 3969:32d4a73901e2
child 4967:b7bcf088e723
comparison
equal deleted inserted replaced
4138:62f5e6b11571 4139:eef75a0c85e3
201 -- 2. roster push (subscription = none or to) 201 -- 2. roster push (subscription = none or to)
202 if rostermanager.unsubscribed(node, host, to_bare) then 202 if rostermanager.unsubscribed(node, host, to_bare) then
203 rostermanager.roster_push(node, host, to_bare); 203 rostermanager.roster_push(node, host, to_bare);
204 end 204 end
205 core_post_stanza(origin, stanza); 205 core_post_stanza(origin, stanza);
206 else
207 origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid presence type"));
206 end 208 end
207 stanza.attr.from, stanza.attr.to = st_from, st_to; 209 stanza.attr.from, stanza.attr.to = st_from, st_to;
208 return true; 210 return true;
209 end 211 end
210 212
251 elseif stanza.attr.type == "unsubscribed" then 253 elseif stanza.attr.type == "unsubscribed" then
252 if rostermanager.process_inbound_subscription_cancellation(node, host, from_bare) then 254 if rostermanager.process_inbound_subscription_cancellation(node, host, from_bare) then
253 sessionmanager.send_to_interested_resources(node, host, stanza); 255 sessionmanager.send_to_interested_resources(node, host, stanza);
254 rostermanager.roster_push(node, host, from_bare); 256 rostermanager.roster_push(node, host, from_bare);
255 end 257 end
256 end -- discard any other type 258 else
259 origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid presence type"));
260 end
257 stanza.attr.from, stanza.attr.to = st_from, st_to; 261 stanza.attr.from, stanza.attr.to = st_from, st_to;
258 return true; 262 return true;
259 end 263 end
260 264
261 local outbound_presence_handler = function(data) 265 local outbound_presence_handler = function(data)
305 end 309 end
306 end 310 end
307 end -- no resources not online, discard 311 end -- no resources not online, discard
308 elseif not t or t == "unavailable" then 312 elseif not t or t == "unavailable" then
309 handle_normal_presence(origin, stanza); 313 handle_normal_presence(origin, stanza);
314 else
315 origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid presence type"));
310 end 316 end
311 return true; 317 return true;
312 end); 318 end);
313 module:hook("presence/full", function(data) 319 module:hook("presence/full", function(data)
314 -- inbound presence to full JID recieved 320 -- inbound presence to full JID recieved