From e6a90fc25c19b4cfceff7b1d89c58927753ee98d Mon Sep 17 00:00:00 2001 From: fiaxh Date: Fri, 14 Aug 2020 16:42:56 +0200 Subject: Implement MUC self ping --- xmpp-vala/src/module/xep/0410_muc_self_ping.vala | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 xmpp-vala/src/module/xep/0410_muc_self_ping.vala (limited to 'xmpp-vala/src/module/xep/0410_muc_self_ping.vala') diff --git a/xmpp-vala/src/module/xep/0410_muc_self_ping.vala b/xmpp-vala/src/module/xep/0410_muc_self_ping.vala new file mode 100644 index 00000000..84772333 --- /dev/null +++ b/xmpp-vala/src/module/xep/0410_muc_self_ping.vala @@ -0,0 +1,18 @@ +namespace Xmpp.Xep.MucSelfPing { + + public static async bool is_joined(XmppStream stream, Jid jid) { + Iq.Stanza iq_result = yield stream.get_module(Xmpp.Xep.Ping.Module.IDENTITY).send_ping(stream, jid); + + if (!iq_result.is_error()) { + return true; + } else { + var error_stanza = iq_result.get_error(); + if (error_stanza.condition in new string[] {ErrorStanza.CONDITION_SERVICE_UNAVAILABLE, ErrorStanza.CONDITION_FEATURE_NOT_IMPLEMENTED}) { + // the client is joined, but the pinged client does not implement XMPP Ping + return true; + } + } + return false; + } + +} -- cgit v1.2.3-54-g00ecf