diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_shared_roster.erl | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/mod_shared_roster.erl b/src/mod_shared_roster.erl index e6b18c5a4..711cae25f 100644 --- a/src/mod_shared_roster.erl +++ b/src/mod_shared_roster.erl @@ -197,8 +197,15 @@ create_group(Host, Group, Opts) -> mnesia:transaction(F). delete_group(Host, Group) -> + GroupHost = {Group, Host}, F = fun() -> - mnesia:delete({sr_group, {Group, Host}}) + %% Delete the group ... + mnesia:delete({sr_group, GroupHost}), + %% ... and its users + Users = mnesia:index_read(sr_user, GroupHost, #sr_user.group_host), + lists:foreach(fun(UserEntry) -> + mnesia:delete_object(UserEntry) + end, Users) end, mnesia:transaction(F). @@ -297,7 +304,8 @@ add_user_to_group(Host, US, Group) -> mnesia:transaction(F). remove_user_from_group(Host, US, Group) -> - R = #sr_user{us = US, group_host = {Group, Host}}, + GroupHost = {Group, Host}, + R = #sr_user{us = US, group_host = GroupHost}, F = fun() -> mnesia:delete_object(R) end, |