aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2010-01-29 21:15:33 +0500
committerWaqas Hussain <waqas20@gmail.com>2010-01-29 21:15:33 +0500
commit39d122abaf1e00c41c8604c17deb27386a6b2223 (patch)
tree0ad7b60a2112a5c02a948d968771c15653f6c183 /util
parent927e5d1974eba1e152bbe5de9796b3343b7a40fb (diff)
parenta24c95d2c90c47339ae396cf7ae5132769269f14 (diff)
downloadprosody-39d122abaf1e00c41c8604c17deb27386a6b2223.tar.gz
prosody-39d122abaf1e00c41c8604c17deb27386a6b2223.zip
Merge with trunk.
Diffstat (limited to 'util')
-rw-r--r--util/stanza.lua26
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