From e20bf15b7a3a8366870578fe3bf442b6d1e1e176 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Mon, 7 Mar 2022 23:01:37 -0500 Subject: [PATCH] Allow disco queries with a node (needed for CAPS) --- src/xmpp/biboumi_component.cpp | 7 ++++--- src/xmpp/biboumi_component.hpp | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/xmpp/biboumi_component.cpp b/src/xmpp/biboumi_component.cpp index f33b705..fbdb2ce 100644 --- a/src/xmpp/biboumi_component.cpp +++ b/src/xmpp/biboumi_component.cpp @@ -536,10 +536,10 @@ void BiboumiComponent::handle_iq(const Stanza& stanza) const std::string node = query->get_tag("node"); if (to_str == this->served_hostname) { - if (node.empty()) + if (node.empty() || node.rfind("https://biboumi.louiz.org/#", 0) == 0) { // On the gateway itself - this->send_self_disco_info(id, from); + this->send_self_disco_info(id, from, node); stanza_error.disable(); } } @@ -943,12 +943,13 @@ std::vector BiboumiComponent::get_bridges() const return res; } -void BiboumiComponent::send_self_disco_info(const std::string& id, const std::string& jid_to) +void BiboumiComponent::send_self_disco_info(const std::string& id, const std::string& jid_to, const std::string& node) { Stanza iq("iq"); { iq["type"] = "result"; iq["id"] = id; + if (!node.empty()) iq["node"] = node; iq["to"] = jid_to; iq["from"] = this->served_hostname; XmlSubNode query(iq, "query"); diff --git a/src/xmpp/biboumi_component.hpp b/src/xmpp/biboumi_component.hpp index f59ed9b..6b63366 100644 --- a/src/xmpp/biboumi_component.hpp +++ b/src/xmpp/biboumi_component.hpp @@ -63,7 +63,7 @@ public: /** * Send a result IQ with the gateway disco informations. */ - void send_self_disco_info(const std::string& id, const std::string& jid_to); + void send_self_disco_info(const std::string& id, const std::string& jid_to, const std::string& node); /** * Send a result IQ with the disco informations regarding IRC server JIDs. */ -- 2.34.2