Return jid_malformed error when sending presence without nick to conference

This commit is contained in:
Paweł Chmielowski 2019-06-13 18:42:02 +02:00
parent b48b6dbda5
commit d48c067681
1 changed files with 26 additions and 8 deletions

View File

@ -1074,13 +1074,18 @@ do_process_presence(Nick, #presence{from = From, type = available, lang = Lang}
StateData; StateData;
{_, false, _} -> {_, false, _} ->
Packet1 = Packet#presence{sub_els = [#muc{}]}, Packet1 = Packet#presence{sub_els = [#muc{}]},
ErrText = <<"That nickname is registered by another " Err = case Nick of
"person">>, <<>> ->
Err = xmpp:err_conflict(ErrText, Lang), 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), ejabberd_router:route_error(Packet1, Err),
StateData; StateData;
_ -> _ ->
change_nick(From, Nick, StateData) change_nick(From, Nick, StateData)
end; end;
false -> false ->
Stanza = maybe_strip_status_from_presence( Stanza = maybe_strip_status_from_presence(
@ -1953,8 +1958,14 @@ add_new_user(From, Nick, Packet, StateData) ->
{error, Err} {error, Err}
end; end;
{_, _, false, _} -> {_, _, false, _} ->
ErrText = <<"That nickname is registered by another person">>, Err = case Nick of
Err = xmpp:err_conflict(ErrText, Lang), <<>> ->
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 -> if not IsSubscribeRequest ->
ejabberd_router:route_error(Packet, Err), ejabberd_router:route_error(Packet, Err),
StateData; StateData;
@ -4056,8 +4067,15 @@ process_iq_mucsub(From,
ErrText = <<"That nickname is already in use by another occupant">>, ErrText = <<"That nickname is already in use by another occupant">>,
{error, xmpp:err_conflict(ErrText, Lang)}; {error, xmpp:err_conflict(ErrText, Lang)};
{_, false} -> {_, false} ->
ErrText = <<"That nickname is registered by another person">>, Err = case Nick of
{error, xmpp:err_conflict(ErrText, Lang)}; <<>> ->
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), NewStateData = set_subscriber(From, Nick, Nodes, StateData),
{result, subscribe_result(Packet), NewStateData} {result, subscribe_result(Packet), NewStateData}