From 658552d605ef440a9b7ebdbbf898983a21567c65 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Sun, 2 Mar 2003 20:55:16 +0000 Subject: * src/ejabberd_c2s.erl: More correct stream closing SVN Revision: 85 --- src/ejabberd_c2s.erl | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index abbcfded5..aa8e241a5 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -58,6 +58,8 @@ -define(STREAM_TRAILER, ""). -define(INVALID_NS_ERR, "Invalid Namespace"). +-define(INVALID_XML_ERR, + "Invalid XML"). %%%---------------------------------------------------------------------- %%% API @@ -113,6 +115,10 @@ wait_for_stream({xmlstreamstart, Name, Attrs}, StateData) -> {stop, normal, StateData} end; +wait_for_stream({xmlstreamerror, _}, StateData) -> + send_text(StateData#state.socket, ?INVALID_XML_ERR), + {stop, normal, StateData}; + wait_for_stream(closed, StateData) -> {stop, normal, StateData}. @@ -170,7 +176,11 @@ wait_for_auth({xmlstreamelement, El}, StateData) -> end; wait_for_auth({xmlstreamend, Name}, StateData) -> - % TODO + send_text(StateData#state.socket, ?STREAM_TRAILER), + {stop, normal, StateData}; + +wait_for_auth({xmlstreamerror, _}, StateData) -> + send_text(StateData#state.socket, ?INVALID_XML_ERR ?STREAM_TRAILER), {stop, normal, StateData}; wait_for_auth(closed, StateData) -> @@ -213,10 +223,14 @@ session_established({xmlstreamelement, El}, StateData) -> {next_state, session_established, NewState}; session_established({xmlstreamend, Name}, StateData) -> + send_text(StateData#state.socket, ?STREAM_TRAILER), + {stop, normal, StateData}; + +session_established({xmlstreamerror, _}, StateData) -> + send_text(StateData#state.socket, ?INVALID_XML_ERR ?STREAM_TRAILER), {stop, normal, StateData}; session_established(closed, StateData) -> - % TODO {stop, normal, StateData}. -- cgit v1.2.3