diff options
author | Waqas Hussain <waqas20@gmail.com> | 2010-01-29 21:15:33 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2010-01-29 21:15:33 +0500 |
commit | 39d122abaf1e00c41c8604c17deb27386a6b2223 (patch) | |
tree | 0ad7b60a2112a5c02a948d968771c15653f6c183 /util/stanza.lua | |
parent | 927e5d1974eba1e152bbe5de9796b3343b7a40fb (diff) | |
parent | a24c95d2c90c47339ae396cf7ae5132769269f14 (diff) | |
download | prosody-39d122abaf1e00c41c8604c17deb27386a6b2223.tar.gz prosody-39d122abaf1e00c41c8604c17deb27386a6b2223.zip |
Merge with trunk.
Diffstat (limited to 'util/stanza.lua')
-rw-r--r-- | util/stanza.lua | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/util/stanza.lua b/util/stanza.lua index c817f93b..d223d53f 100644 --- a/util/stanza.lua +++ b/util/stanza.lua @@ -38,6 +38,8 @@ if do_pretty_printing then end end +local xmlns_stanzas = "urn:ietf:params:xml:ns:xmpp-stanzas"; + module "stanza" stanza_mt = { __type = "stanza" }; @@ -189,6 +191,30 @@ function stanza_mt.get_text(t) end end +function stanza_mt.get_error(stanza) + local type, condition, text; + + local error_tag = stanza:get_child("error"); + if not error_tag then + return nil, nil, nil; + end + type = error_tag.attr.type; + + for child in error_tag:children() do + if child.attr.xmlns == xmlns_stanzas then + if not text and child.name == "text" then + text = child:get_text(); + elseif not condition then + condition = child.name; + end + if condition and text then + break; + end + end + end + return type, condition or "undefined-condition", text or ""; +end + function stanza_mt.__add(s1, s2) return s1:add_direct_child(s2); end |