25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-12-20 17:27:00 +01:00

Don't perform useless resourceprep

This commit is contained in:
Evgeniy Khramtsov 2017-02-27 13:58:57 +03:00
parent a098d1ec62
commit 719b4d1183
2 changed files with 10 additions and 18 deletions

View File

@ -24,7 +24,7 @@
{fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.0.10"}}}, {fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.0.10"}}},
{stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.7"}}}, {stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.7"}}},
{fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.21"}}}, {fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.21"}}},
{xmpp, ".*", {git, "https://github.com/processone/xmpp", "f5cbd6dc0f3ec786b33a7e708979ed27dfbbb0ec"}}, {xmpp, ".*", {git, "https://github.com/processone/xmpp", "4aaed37a16fc21be505553aabf9f47a48b8af027"}},
{stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.9"}}}, {stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.9"}}},
{esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.10"}}}, {esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.10"}}},
{fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.8"}}}, {fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.8"}}},

View File

@ -592,25 +592,17 @@ process_authenticated_packet(Pkt, #{mod := Mod} = State) ->
-spec process_bind(xmpp_element(), state()) -> state(). -spec process_bind(xmpp_element(), state()) -> state().
process_bind(#iq{type = set, sub_els = [_]} = Pkt, process_bind(#iq{type = set, sub_els = [_]} = Pkt,
#{xmlns := ?NS_CLIENT, mod := Mod, lang := Lang} = State) -> #{xmlns := ?NS_CLIENT, mod := Mod} = State) ->
case xmpp:get_subtag(Pkt, #bind{}) of case xmpp:get_subtag(Pkt, #bind{}) of
#bind{resource = R} -> #bind{resource = R} ->
case jid:resourceprep(R) of case Mod:bind(R, State) of
error -> {ok, #{user := U, server := S, resource := NewR} = State1}
Txt = <<"Malformed resource">>, when NewR /= <<"">> ->
Err = xmpp:err_bad_request(Txt, Lang), Reply = #bind{jid = jid:make(U, S, NewR)},
send_error(State, Pkt, Err); State2 = send_pkt(State1, xmpp:make_iq_result(Pkt, Reply)),
_ -> process_stream_established(State2);
case Mod:bind(R, State) of {error, #stanza_error{} = Err, State1} ->
{ok, #{user := U, send_error(State1, Pkt, Err)
server := S,
resource := NewR} = State1} when NewR /= <<"">> ->
Reply = #bind{jid = jid:make(U, S, NewR)},
State2 = send_pkt(State1, xmpp:make_iq_result(Pkt, Reply)),
process_stream_established(State2);
{error, #stanza_error{} = Err, State1} ->
send_error(State1, Pkt, Err)
end
end; end;
_ -> _ ->
try Mod:handle_unbinded_packet(Pkt, State) try Mod:handle_unbinded_packet(Pkt, State)