From 62d3d7a32d2dbae84dc16a85cd389ab814cefc15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Wed, 4 Oct 2023 17:16:29 +0200 Subject: [PATCH] Relay pubsub iq queries to muc members without using bare jid We do something similar for vcard queries, this allows target server to respond to those queries by target server, which is what we want to do in both of those cases. --- src/mod_muc_room.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 46a4c5fc3..88e2c0c0a 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -671,6 +671,10 @@ normal_state({route, ToNick, ejabberd_router:route_iq( xmpp:set_from_to(Packet, FromJID, jid:remove_resource(To)), Packet, self()); + pubsub -> + ejabberd_router:route_iq( + xmpp:set_from_to(Packet, FromJID, jid:remove_resource(To)), + Packet, self()); ping when ToNick == FromNick -> %% Self-ping optimization from XEP-0410 ejabberd_router:route(xmpp:make_iq_result(Packet)); @@ -1304,12 +1308,13 @@ process_voice_approval(From, Pkt, VoiceApproval, StateData) -> StateData end. --spec direct_iq_type(iq()) -> vcard | ping | request | response | stanza_error(). +-spec direct_iq_type(iq()) -> vcard | ping | request | response | pubsub | stanza_error(). direct_iq_type(#iq{type = T, sub_els = SubEls, lang = Lang}) when T == get; T == set -> case SubEls of [El] -> case xmpp:get_ns(El) of ?NS_VCARD when T == get -> vcard; + ?NS_PUBSUB when T == get -> pubsub; ?NS_PING when T == get -> ping; _ -> request end;