aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_c2s.erl8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 92ca4f11e..f6b0a7280 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -277,6 +277,7 @@ init([{SockMod, Socket}, Opts, FSMLimitOpts]) ->
ip = IP,
redirect = Redirect,
fsm_limit_opts = FSMLimitOpts},
+ erlang:send_after(?C2S_OPEN_TIMEOUT, self(), open_timeout),
case get_jid_from_opts(Opts) of
{ok, #jid{user = U, server = Server, resource = R} = JID} ->
?GEN_FSM:send_event(self(), open_session),
@@ -1694,6 +1695,13 @@ handle_info({ack_timeout, Counter}, StateName, StateData) ->
fsm_next_state(StateName, StateData)
end
end;
+handle_info(open_timeout, StateName, StateData) ->
+ case StateName of
+ session_established ->
+ fsm_next_state(StateName, StateData);
+ _ ->
+ {stop, normal, StateData}
+ end;
handle_info({'DOWN', Monitor, _Type, _Object, _Info}, StateName, StateData)
when Monitor == StateData#state.socket_monitor ->
if