aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mod_push.erl16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/mod_push.erl b/src/mod_push.erl
index a09e8d392..5389e3dfb 100644
--- a/src/mod_push.erl
+++ b/src/mod_push.erl
@@ -34,8 +34,8 @@
-export([mod_doc/0]).
%% ejabberd_hooks callbacks.
-export([disco_sm_features/5, c2s_session_pending/1, c2s_copy_session/2,
- c2s_handle_cast/2, c2s_stanza/3, mam_message/7, offline_message/1,
- remove_user/2]).
+ c2s_session_resumed/1, c2s_handle_cast/2, c2s_stanza/3, mam_message/7,
+ offline_message/1, remove_user/2]).
%% gen_iq_handler callback.
-export([process_iq/1]).
@@ -259,6 +259,8 @@ register_hooks(Host) ->
c2s_session_pending, 50),
ejabberd_hooks:add(c2s_copy_session, Host, ?MODULE,
c2s_copy_session, 50),
+ ejabberd_hooks:add(c2s_session_resumed, Host, ?MODULE,
+ c2s_session_resumed, 50),
ejabberd_hooks:add(c2s_handle_cast, Host, ?MODULE,
c2s_handle_cast, 50),
ejabberd_hooks:add(c2s_handle_send, Host, ?MODULE,
@@ -278,6 +280,8 @@ unregister_hooks(Host) ->
c2s_session_pending, 50),
ejabberd_hooks:delete(c2s_copy_session, Host, ?MODULE,
c2s_copy_session, 50),
+ ejabberd_hooks:delete(c2s_session_resumed, Host, ?MODULE,
+ c2s_session_resumed, 50),
ejabberd_hooks:delete(c2s_handle_cast, Host, ?MODULE,
c2s_handle_cast, 50),
ejabberd_hooks:delete(c2s_handle_send, Host, ?MODULE,
@@ -475,6 +479,14 @@ c2s_copy_session(State, #{push_enabled := true,
c2s_copy_session(State, _) ->
State.
+-spec c2s_session_resumed(c2s_state()) -> c2s_state().
+c2s_session_resumed(#{push_session_id := ID,
+ user := U, server := S, resource := R} = State) ->
+ ejabberd_sm:set_user_info(U, S, R, push_id, ID),
+ State;
+c2s_session_resumed(State) ->
+ State.
+
-spec c2s_handle_cast(c2s_state(), any()) -> c2s_state() | {stop, c2s_state()}.
c2s_handle_cast(State, {push_enable, ID}) ->
{stop, State#{push_enabled => true,