summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-03-07 18:46:02 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-03-07 18:46:02 +0300
commitd0a185f2d9c9c078d4061789ff8ab9839df2878c (patch)
treea12559235f5777ff0b9c88249a6ff0762b7a702e /src
parentDon't call deprecated jid functions from the test suite (diff)
Report some TLS errors
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_c2s.erl6
-rw-r--r--src/ejabberd_s2s_in.erl14
2 files changed, 18 insertions, 2 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 826a49cd..1b7bac13 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -275,6 +275,12 @@ process_terminated(#{sockmod := SockMod, socket := Socket, jid := JID} = State,
end,
bounce_message_queue(),
State1;
+process_terminated(#{sockmod := SockMod, socket := Socket,
+ stop_reason := {tls, no_certfile}} = State, Reason) ->
+ %% TODO: we probably need to report more TLS errors here
+ ?ERROR_MSG("(~s) Failed to secure c2s connection: ~s",
+ [SockMod:pp(Socket), format_reason(State, Reason)]),
+ State;
process_terminated(State, _Reason) ->
State.
diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl
index 4289a8b3..1cddfec6 100644
--- a/src/ejabberd_s2s_in.erl
+++ b/src/ejabberd_s2s_in.erl
@@ -168,7 +168,8 @@ handle_stream_start(_StreamStart, #{lserver := LServer} = State) ->
end.
handle_stream_end(Reason, #{server_host := LServer} = State) ->
- ejabberd_hooks:run_fold(s2s_in_closed, LServer, State, [Reason]).
+ State1 = State#{stop_reason => Reason},
+ ejabberd_hooks:run_fold(s2s_in_closed, LServer, State1, [Reason]).
handle_stream_established(State) ->
set_idle_timeout(State#{established => true}).
@@ -284,7 +285,16 @@ handle_cast(Msg, #{server_host := LServer} = State) ->
handle_info(Info, #{server_host := LServer} = State) ->
ejabberd_hooks:run_fold(s2s_in_handle_info, LServer, State, [Info]).
-terminate(Reason, #{auth_domains := AuthDomains}) ->
+terminate(Reason, #{auth_domains := AuthDomains,
+ sockmod := SockMod, socket := Socket} = State) ->
+ case maps:get(stop_reason, State, undefined) of
+ {tls, no_certfile} = Err ->
+ %% TODO: we probably need to report more TLS errors here
+ ?ERROR_MSG("(~s) Failed to secure inbound s2s connection: ~s",
+ [SockMod:pp(Socket), xmpp_stream_in:format_error(Err)]);
+ _ ->
+ ok
+ end,
case Reason of
{process_limit, _} ->
sets:fold(