diff options
author | Florent Le Coz <louiz@louiz.org> | 2014-05-28 01:27:41 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2014-05-28 01:27:41 +0200 |
commit | 6c2d03da4ea0443624b6bf434b6a654c12e48438 (patch) | |
tree | a1fd150cd3f6c114f1844bed7f57d8ce6438049f /src/xmpp | |
parent | 7b31bea75b0c5b9fe127ea6d845e48a3f87d480f (diff) | |
download | biboumi-6c2d03da4ea0443624b6bf434b6a654c12e48438.tar.gz biboumi-6c2d03da4ea0443624b6bf434b6a654c12e48438.tar.bz2 biboumi-6c2d03da4ea0443624b6bf434b6a654c12e48438.tar.xz biboumi-6c2d03da4ea0443624b6bf434b6a654c12e48438.zip |
Send an error presence when the connection to the IRC server fails
Diffstat (limited to 'src/xmpp')
-rw-r--r-- | src/xmpp/xmpp_component.cpp | 27 | ||||
-rw-r--r-- | src/xmpp/xmpp_component.hpp | 9 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/xmpp/xmpp_component.cpp b/src/xmpp/xmpp_component.cpp index 55f0ca4..3c2aa7a 100644 --- a/src/xmpp/xmpp_component.cpp +++ b/src/xmpp/xmpp_component.cpp @@ -796,6 +796,33 @@ void XmppComponent::send_nickname_conflict_error(const std::string& muc_name, this->send_stanza(presence); } +void XmppComponent::send_presence_error(const std::string& muc_name, + const std::string& nickname, + const std::string& jid_to, + const std::string& type, + const std::string& condition, + const std::string&) +{ + Stanza presence("presence"); + presence["from"] = muc_name + "@" + this->served_hostname + "/" + nickname; + presence["to"] = jid_to; + XmlNode x("x"); + x["xmlns"] = MUC_NS; + x.close(); + presence.add_child(std::move(x)); + XmlNode error("error"); + error["by"] = muc_name + "@" + this->served_hostname; + error["type"] = type; + XmlNode subnode(condition); + subnode["xmlns"] = STANZA_NS; + subnode.close(); + error.add_child(std::move(subnode)); + error.close(); + presence.add_child(std::move(error)); + presence.close(); + this->send_stanza(presence); +} + void XmppComponent::send_affiliation_role_change(const std::string& muc_name, const std::string& target, const std::string& affiliation, diff --git a/src/xmpp/xmpp_component.hpp b/src/xmpp/xmpp_component.hpp index f081420..9839158 100644 --- a/src/xmpp/xmpp_component.hpp +++ b/src/xmpp/xmpp_component.hpp @@ -142,6 +142,15 @@ public: const std::string& nickname, const std::string& jid_to); /** + * Send a generic presence error + */ + void send_presence_error(const std::string& muc_name, + const std::string& nickname, + const std::string& jid_to, + const std::string& type, + const std::string& condition, + const std::string& text); + /** * Send a presence from the MUC indicating a change in the role and/or * affiliation of a participant */ |