# UNDF: UNDF-2026-000000061 --- a/src/mod_shared_roster.erl +++ b/src/mod_shared_roster.erl @@ -351,10 +351,10 @@ process_subscription(Direction, User, Server, JID, _Type, Acc) -> {DisplayedGroups, _} = get_user_displayed_groups(US), - SRUsers = lists:usort(lists:flatmap(fun (Group) -> - get_group_users(LServer, Group) - end, - DisplayedGroups)), - case lists:member(US1, SRUsers) of + SRUsersSet = lists:foldl( + fun(Group, Acc0) -> + lists:foldl(fun(U, S) -> gb_sets:add(U, S) end, + Acc0, get_group_users(LServer, Group)) + end, gb_sets:empty(), DisplayedGroups), + case gb_sets:is_member(US1, SRUsersSet) of true -> case Direction of in -> {stop, false}; @@ -658,7 +658,8 @@ is_user_in_group(US, Group, Host) -> Mod = gen_mod:db_mod(Host, ?MODULE), case Mod:is_user_in_group(US, Group, Host) of false -> - lists:member(US, get_group_users(Host, Group)); + GroupSet = gb_sets:from_list(get_group_users(Host, Group)), + gb_sets:is_member(US, GroupSet); true -> true end.