diff options
author | Florent Le Coz <louiz@louiz.org> | 2015-05-11 05:03:09 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2015-05-11 05:03:09 +0200 |
commit | ad5bd99618fd4f1ee92d48d90912d627187aaa11 (patch) | |
tree | f9cd43ec45486ce85fc490e02e82a1f65b0c8b63 /src | |
parent | 5475d16b574e1daf9c1e5f94b5b821bfb1b9c8f8 (diff) | |
download | biboumi-ad5bd99618fd4f1ee92d48d90912d627187aaa11.tar.gz biboumi-ad5bd99618fd4f1ee92d48d90912d627187aaa11.tar.bz2 biboumi-ad5bd99618fd4f1ee92d48d90912d627187aaa11.tar.xz biboumi-ad5bd99618fd4f1ee92d48d90912d627187aaa11.zip |
Properly send error response on presence stanzas
Diffstat (limited to 'src')
-rw-r--r-- | src/xmpp/biboumi_component.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/xmpp/biboumi_component.cpp b/src/xmpp/biboumi_component.cpp index 4996438..5d571ec 100644 --- a/src/xmpp/biboumi_component.cpp +++ b/src/xmpp/biboumi_component.cpp @@ -116,6 +116,7 @@ void BiboumiComponent::handle_presence(const Stanza& stanza) error_type, error_name, ""); }); + try { if (iid.is_channel && !iid.get_server().empty()) { // presence toward a MUC that corresponds to an irc channel, or a // dummy channel if iid.chan is empty @@ -141,6 +142,14 @@ void BiboumiComponent::handle_presence(const Stanza& stanza) if (type.empty()) this->send_invalid_room_error(to.local, to.resource, from); } + } + catch (const IRCNotConnected& ex) + { + this->send_stanza_error("presence", from, to_str, id, + "cancel", "remote-server-not-found", + "Not connected to IRC server "s + ex.hostname, + true); + } stanza_error.disable(); } |