Software /
code /
verse
Changeset
28:afe9e6d6c87a
verse.client: New stanza dispatcher to fire events based on the name (and in the case of iq, xmlns) of the stanza
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 09 Dec 2009 20:55:34 +0000 |
parents | 27:a4a6a33a34c1 |
children | 29:0d275519eff4 |
files | client.lua |
diffstat | 1 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/client.lua Wed Dec 09 13:55:58 2009 +0000 +++ b/client.lua Wed Dec 09 20:55:34 2009 +0000 @@ -33,6 +33,24 @@ elseif stanza.attr.xmlns then return stream:event("stream/"..stanza.attr.xmlns, stanza); end + + stream:hook("stanza", function (stanza) + if stanza.attr.xmlns == nil or stanza.attr.xmlns == "jabber:client" then + if stanza.name == "iq" and (stanza.attr.type == "get" or stanza.attr.type == "set") then + local xmlns = stanza.tags[1] and stanza.tags[1].attr.xmlns; + if xmlns then + ret = stream:event("iq/"..xmlns, stanza); + if not ret then + ret = stream:event("iq", stanza); + end + end + else + ret = stream:event(stanza.name, stanza); + end + end + return ret; + end, -1); + return stream:event("stanza", stanza); end