Skip to content

Commit

Permalink
Merge pull request sockjs#21 from rounce/dev
Browse files Browse the repository at this point in the history
fix {odd_info,session_timeout}
  • Loading branch information
majek committed Apr 6, 2012
2 parents aea229d + 350900f commit f54c839
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions src/sockjs_session.erl
Expand Up @@ -89,9 +89,16 @@ reply(SessionPid, Multiple) when is_pid(SessionPid) ->
reply(SessionId, Multiple) ->
reply(spid(SessionId), Multiple).


%% --------------------------------------------------------------------------

cancel_timer_safe(Timer, Atom) ->
case erlang:cancel_timer(Timer) of
false ->
receive Atom -> ok
after 0 -> ok end;
_ -> ok
end.

spid(SessionId) ->
case ets:lookup(?ETS, SessionId) of
[] -> throw(no_session);
Expand All @@ -109,7 +116,7 @@ mark_waiting(Pid, State = #session{response_pid = undefined,
heartbeat_delay = HeartbeatDelay})
when DisconnectTRef =/= undefined ->
link(Pid),
_ = erlang:cancel_timer(DisconnectTRef),
cancel_timer_safe(DisconnectTRef, session_timeout),
TRef = erlang:send_after(HeartbeatDelay, self(), heartbeat_triggered),
State#session{response_pid = Pid,
disconnect_tref = undefined,
Expand All @@ -125,13 +132,7 @@ unmark_waiting(RPid, State = #session{response_pid = RPid,
_ = case HeartbeatTRef of
undefined -> ok;
triggered -> ok;
_Else ->
case erlang:cancel_timer(HeartbeatTRef) of
false ->
receive heartbeat_triggered -> ok
after 0 -> ok end;
_ -> ok
end
_Else -> cancel_timer_safe(HeartbeatTRef, heartbeat_triggered)
end,
TRef = erlang:send_after(DisconnectDelay, self(), session_timeout),
State#session{response_pid = undefined,
Expand All @@ -143,7 +144,7 @@ unmark_waiting(_Pid, State = #session{response_pid = undefined,
disconnect_tref = DisconnectTRef,
disconnect_delay = DisconnectDelay})
when DisconnectTRef =/= undefined ->
_ = erlang:cancel_timer(DisconnectTRef),
cancel_timer_safe(DisconnectTRef, session_timeout),
TRef = erlang:send_after(DisconnectDelay, self(), session_timeout),
State#session{disconnect_tref = TRef};

Expand Down

0 comments on commit f54c839

Please sign in to comment.