Return jid_malformed error when sending presence without nick to conference
This commit is contained in:
parent
b48b6dbda5
commit
d48c067681
|
@ -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}
|
||||||
|
|
Loading…
Reference in New Issue