From 7cb79cd4826fbd505fa29e77326a573974c5a814 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Mon, 9 May 2005 19:12:41 +0000 Subject: * src/ejabberd_c2s.erl: Fixed starttls_required behaviour for legacy connections (thanks to Brian Campbell) SVN Revision: 345 --- src/ejabberd_c2s.erl | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 43a8a1084..361751f66 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -256,16 +256,30 @@ wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) -> _ -> Header = io_lib:format( ?STREAM_HEADER, - [StateData#state.streamid, Server, "", DefaultLang]), - send_text(StateData, Header), - {next_state, wait_for_auth, - StateData#state{server = Server, - lang = Lang}} + [StateData#state.streamid, Server, "", + DefaultLang]), + if + (not StateData#state.tls_enabled) and + StateData#state.tls_required -> + send_text(StateData, + Header ++ + ?POLICY_VIOLATION_ERR( + Lang, + "Use of STARTTLS required") ++ + ?STREAM_TRAILER), + {stop, normal, StateData}; + true -> + send_text(StateData, Header), + {next_state, wait_for_auth, + StateData#state{server = Server, + lang = Lang}} + end end; _ -> Header = io_lib:format( ?STREAM_HEADER, - [StateData#state.streamid, ?MYNAME, "", DefaultLang]), + [StateData#state.streamid, ?MYNAME, "", + DefaultLang]), send_text(StateData, Header ++ ?HOST_UNKNOWN_ERR ++ ?STREAM_TRAILER), {stop, normal, StateData} -- cgit v1.2.3