aboutsummaryrefslogtreecommitdiff
path: root/src/mod_ping.erl
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2018-09-04 09:52:41 +0200
committerPaweł Chmielowski <pchmielowski@process-one.net>2018-09-04 09:52:41 +0200
commit57936bfa4e48958031b908cfe3596926c4441fb5 (patch)
tree976eef55383367675b6af0110585f0a9549591ac /src/mod_ping.erl
parentCorrectly handle empty result with RSM (diff)
Don't stop sending pings when receiving timeout for timeout_action=none
Diffstat (limited to 'src/mod_ping.erl')
-rw-r--r--src/mod_ping.erl27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/mod_ping.erl b/src/mod_ping.erl
index 88146b14b..e0b4a36a9 100644
--- a/src/mod_ping.erl
+++ b/src/mod_ping.erl
@@ -123,21 +123,22 @@ handle_cast({stop_ping, JID}, State) ->
Timers = del_timer(JID, State#state.timers),
{noreply, State#state{timers = Timers}};
handle_cast({iq_reply, timeout, JID}, State) ->
- Timers = del_timer(JID, State#state.timers),
ejabberd_hooks:run(user_ping_timeout, State#state.host,
[JID]),
- case State#state.timeout_action of
- kill ->
- #jid{user = User, server = Server,
- resource = Resource} =
- JID,
- case ejabberd_sm:get_session_pid(User, Server, Resource)
- of
- Pid when is_pid(Pid) -> ejabberd_c2s:close(Pid, ping_timeout);
- _ -> ok
- end;
- _ -> ok
- end,
+ Timers = case State#state.timeout_action of
+ kill ->
+ #jid{user = User, server = Server,
+ resource = Resource} =
+ JID,
+ case ejabberd_sm:get_session_pid(User, Server, Resource)
+ of
+ Pid when is_pid(Pid) -> ejabberd_c2s:close(Pid, ping_timeout);
+ _ -> ok
+ end,
+ del_timer(JID, State#state.timers);
+ _ ->
+ State#state.timers
+ end,
{noreply, State#state{timers = Timers}};
handle_cast({iq_reply, #iq{}, _JID}, State) ->
{noreply, State};