diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2019-06-13 18:42:02 +0200 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2019-06-13 18:42:02 +0200 |
commit | d48c067681d4ab25f7b97559757d8e7865ac0251 (patch) | |
tree | e5c4726b31a51fa1512b57f145962f35b394a899 /src | |
parent | Merge pull request #2651 from Iperity/fix-privacy-race-condition (diff) |
Return jid_malformed error when sending presence without nick to conference
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_muc_room.erl | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 79b94e74d..67642a4de 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -1074,13 +1074,18 @@ do_process_presence(Nick, #presence{from = From, type = available, lang = Lang} StateData; {_, false, _} -> Packet1 = Packet#presence{sub_els = [#muc{}]}, - ErrText = <<"That nickname is registered by another " - "person">>, - Err = xmpp:err_conflict(ErrText, Lang), + Err = case Nick of + <<>> -> + xmpp:err_jid_malformed(<<"Nickname can't be empty">>, + Lang); + _ -> + xmpp:err_conflict(<<"That nickname is registered" + " by another person">>, Lang) + end, ejabberd_router:route_error(Packet1, Err), StateData; _ -> - change_nick(From, Nick, StateData) + change_nick(From, Nick, StateData) end; false -> Stanza = maybe_strip_status_from_presence( @@ -1953,8 +1958,14 @@ add_new_user(From, Nick, Packet, StateData) -> {error, Err} end; {_, _, false, _} -> - ErrText = <<"That nickname is registered by another person">>, - Err = xmpp:err_conflict(ErrText, Lang), + Err = case Nick of + <<>> -> + xmpp:err_jid_malformed(<<"Nickname can't be empty">>, + Lang); + _ -> + xmpp:err_conflict(<<"That nickname is registered" + " by another person">>, Lang) + end, if not IsSubscribeRequest -> ejabberd_router:route_error(Packet, Err), StateData; @@ -4056,8 +4067,15 @@ process_iq_mucsub(From, ErrText = <<"That nickname is already in use by another occupant">>, {error, xmpp:err_conflict(ErrText, Lang)}; {_, false} -> - ErrText = <<"That nickname is registered by another person">>, - {error, xmpp:err_conflict(ErrText, Lang)}; + Err = case Nick of + <<>> -> + xmpp:err_jid_malformed(<<"Nickname can't be empty">>, + Lang); + _ -> + xmpp:err_conflict(<<"That nickname is registered" + " by another person">>, Lang) + end, + {error, Err}; _ -> NewStateData = set_subscriber(From, Nick, Nodes, StateData), {result, subscribe_result(Packet), NewStateData} |