diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2022-01-15 18:18:24 +0100 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2022-01-15 18:18:24 +0100 |
commit | 8e88fa3884a7a396a33b69fa2ea3d805e1d49501 (patch) | |
tree | 7a499a68b1cf63e1917284e8a7db03cde99b0a05 /src/mod_shared_roster.erl | |
parent | Document 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.erl | 7 |
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( |