From ae66c17ec006ef854365996541c76d8424ed6c07 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Sat, 9 Dec 2017 23:13:20 +0300 Subject: [PATCH] Include tag in presence errors related to nick change Refer to example 52 and example 53 of XEP-0045 for details. Thanks to Daniel Gultsch for spotting this. --- src/mod_muc_room.erl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 6ab920384..271e49b45 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -1011,22 +1011,25 @@ do_process_presence(Nick, #presence{from = From, type = available, lang = Lang} {(StateData#state.config)#config.allow_visitor_nickchange, is_visitor(From, StateData)}} of {_, _, {false, true}} -> + Packet1 = Packet#presence{sub_els = [#muc{}]}, ErrText = <<"Visitors are not allowed to change their " "nicknames in this room">>, Err = xmpp:err_not_allowed(ErrText, Lang), - ejabberd_router:route_error(Packet, Err), + ejabberd_router:route_error(Packet1, Err), StateData; {true, _, _} -> + Packet1 = Packet#presence{sub_els = [#muc{}]}, ErrText = <<"That nickname is already in use by another " "occupant">>, Err = xmpp:err_conflict(ErrText, Lang), - ejabberd_router:route_error(Packet, Err), + ejabberd_router:route_error(Packet1, Err), StateData; {_, false, _} -> + Packet1 = Packet#presence{sub_els = [#muc{}]}, ErrText = <<"That nickname is registered by another " "person">>, Err = xmpp:err_conflict(ErrText, Lang), - ejabberd_router:route_error(Packet, Err), + ejabberd_router:route_error(Packet1, Err), StateData; _ -> change_nick(From, Nick, StateData)