diff options
author | Florent Le Coz <louiz@louiz.org> | 2014-05-15 00:47:20 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2014-05-15 00:47:20 +0200 |
commit | df765faab92f5fcbf05cc9316ba27b509158ce1c (patch) | |
tree | 0856fb574420ab3f898ce105f29e725ceda2b0c0 | |
parent | 7c7da2cedbd5701a849237f24407d5cb566db0b5 (diff) | |
download | biboumi-df765faab92f5fcbf05cc9316ba27b509158ce1c.tar.gz biboumi-df765faab92f5fcbf05cc9316ba27b509158ce1c.tar.bz2 biboumi-df765faab92f5fcbf05cc9316ba27b509158ce1c.tar.xz biboumi-df765faab92f5fcbf05cc9316ba27b509158ce1c.zip |
Only call get_last_child() if the node has children
Explain that the behaviour is otherwise undefined, in the comment.
-rw-r--r-- | src/xmpp/xmpp_component.cpp | 2 | ||||
-rw-r--r-- | src/xmpp/xmpp_stanza.hpp | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/xmpp/xmpp_component.cpp b/src/xmpp/xmpp_component.cpp index f6e1ddb..32f5d96 100644 --- a/src/xmpp/xmpp_component.cpp +++ b/src/xmpp/xmpp_component.cpp @@ -380,7 +380,7 @@ void XmppComponent::handle_message(const Stanza& stanza) // We consider this to be true, unless the error condition is // specified and is not in the kickable_errors set bool kickable_error = true; - if (error) + if (error && error->has_children()) { const XmlNode* condition = error->get_last_child(); if (kickable_errors.find(condition->get_name()) == kickable_errors.end()) diff --git a/src/xmpp/xmpp_stanza.hpp b/src/xmpp/xmpp_stanza.hpp index 9dee51f..476596b 100644 --- a/src/xmpp/xmpp_stanza.hpp +++ b/src/xmpp/xmpp_stanza.hpp @@ -77,7 +77,9 @@ public: XmlNode* add_child(XmlNode* child); XmlNode* add_child(XmlNode&& child); /** - * Returns the last of the children + * Returns the last of the children. If the node doesn't have any child, + * the behaviour is undefined. The user should make sure this is the case + * by calling has_children() for example. */ XmlNode* get_last_child() const; /** |