summaryrefslogtreecommitdiff
path: root/src/mod_shared_roster.erl
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2022-01-15 18:18:24 +0100
committerHolger Weiss <holger@zedat.fu-berlin.de>2022-01-15 18:18:24 +0100
commit8e88fa3884a7a396a33b69fa2ea3d805e1d49501 (patch)
tree7a499a68b1cf63e1917284e8a7db03cde99b0a05 /src/mod_shared_roster.erl
parentDocument that 'unregister' command deletes data associated with the account (diff)
mod_shared_roster: Normalize JID on unset_presence
Don't forget to normalize the JID handed over from ejabberd_sm on presence-unavailable. Without normalization, mod_shared_roster might fail to look up the storage backend for the given host name, for example. Fixes #3752.
Diffstat (limited to 'src/mod_shared_roster.erl')
-rw-r--r--src/mod_shared_roster.erl7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mod_shared_roster.erl b/src/mod_shared_roster.erl
index 13ff9046..358a8df3 100644
--- a/src/mod_shared_roster.erl
+++ b/src/mod_shared_roster.erl
@@ -870,12 +870,15 @@ c2s_self_presence(Acc) ->
Acc.
-spec unset_presence(binary(), binary(), binary(), binary()) -> ok.
-unset_presence(LUser, LServer, Resource, Status) ->
+unset_presence(User, Server, Resource, Status) ->
+ LUser = jid:nodeprep(User),
+ LServer = jid:nameprep(Server),
+ LResource = jid:resourceprep(Resource),
Resources = ejabberd_sm:get_user_resources(LUser,
LServer),
?DEBUG("Unset_presence for ~p @ ~p / ~p -> ~p "
"(~p resources)",
- [LUser, LServer, Resource, Status, length(Resources)]),
+ [LUser, LServer, LResource, Status, length(Resources)]),
case length(Resources) of
0 ->
lists:foreach(