aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2012-02-03 17:53:05 +0200
committerAlexey Shchepin <alexey@process-one.net>2012-02-03 17:53:05 +0200
commitea6e85d926b85cbcacb9bc91dee87c69c247c86f (patch)
tree8ad77292983fef6eb3f18a6e8f8555006e110b6f /src
parentFixed ejabberd_http:get_line (diff)
Use separate timer for C2S_OPEN_TIMEOUT
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