From 5ed941ce0c6599e3d96d43e57c070d9e78eed6db Mon Sep 17 00:00:00 2001 From: Oibek Khashimov Date: Thu, 7 Aug 2025 12:33:10 +0600 Subject: [PATCH] Broadcast messages to online users only --- src/muc_light/mod_muc_light_codec_modern.erl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/muc_light/mod_muc_light_codec_modern.erl b/src/muc_light/mod_muc_light_codec_modern.erl index 33e90a3f4e..3b9336ac22 100644 --- a/src/muc_light/mod_muc_light_codec_modern.erl +++ b/src/muc_light/mod_muc_light_codec_modern.erl @@ -72,7 +72,7 @@ encode({#msg{} = Msg, AffUsers}, Sender, RoomBareJid, HandleFun, Acc) -> = mongoose_hooks:filter_room_packet(HostType, MsgForArch, EventData), lists:foreach( fun({{U, S}, _}) -> - msg_to_aff_user(RoomJID, U, S, Attrs, Children, HandleFun) + msg_to_aff_user_online(RoomJID, U, S, Attrs, Children, HandleFun) end, AffUsers), mongoose_acc:update_stanza(#{from_jid => RoomJID, to_jid => RoomBareJid, @@ -530,3 +530,14 @@ room_event(Acc, RoomJID) -> affiliation => owner, role => moderator, timestamp => TS}. + +-spec msg_to_aff_user_online(From :: jid:jid(), ToU :: jid:luser(), ToS :: jid:lserver(), + Attrs :: exml:attrs(), Children :: [exml:child()], + HandleFun :: mod_muc_light_codec_backend:encoded_packet_handler()) -> ok. +msg_to_aff_user_online(RoomJID, U, S, Attrs, Children, HandleFun) -> + case ejabberd_sm_backend:get_sessions(U, S) of + [_ | _] -> + msg_to_aff_user(RoomJID, U, S, Attrs, Children, HandleFun); + _ -> + ok + end.