From f3594ec8811e2075e30b2ec94681507165542aeb Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Tue, 28 Feb 2017 10:12:11 +0300 Subject: [PATCH] Resend stream header before calling handle_auth_success/2 callback --- src/xmpp_stream_out.erl | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/xmpp_stream_out.erl b/src/xmpp_stream_out.erl index 67fdf7db9..d663f32df 100644 --- a/src/xmpp_stream_out.erl +++ b/src/xmpp_stream_out.erl @@ -624,18 +624,18 @@ process_cert_verification(State) -> process_sasl_success(#{mod := Mod, sockmod := SockMod, socket := Socket} = State) -> - State1 = try Mod:handle_auth_success(<<"EXTERNAL">>, State) - catch _:undef -> State - end, - case is_disconnected(State1) of - true -> State1; + SockMod:reset_stream(Socket), + State1 = State#{stream_id => new_id(), + stream_restarted => true, + stream_state => wait_for_stream, + stream_authenticated => true}, + State2 = send_header(State1), + case is_disconnected(State2) of + true -> State2; false -> - SockMod:reset_stream(Socket), - State2 = State1#{stream_id => new_id(), - stream_restarted => true, - stream_state => wait_for_stream, - stream_authenticated => true}, - send_header(State2) + try Mod:handle_auth_success(<<"EXTERNAL">>, State2) + catch _:undef -> State2 + end end. -spec process_sasl_failure(sasl_failure(), state()) -> state().