summaryrefslogtreecommitdiff
path: root/src/mod_privilege.erl
diff options
context:
space:
mode:
authorEvgeny Khramtsov <ekhramtsov@process-one.net>2019-07-29 10:46:20 +0300
committerEvgeny Khramtsov <ekhramtsov@process-one.net>2019-07-29 10:46:20 +0300
commit35576b460835a4c667a926ca86e58414fe3d8d12 (patch)
treea2c5f3ef196c2569227660779a901fcdee9fb18a /src/mod_privilege.erl
parentImprove ejabberd halting procedure (diff)
Improve hooks validator and fix bugs related to hooks registration
Diffstat (limited to 'src/mod_privilege.erl')
-rw-r--r--src/mod_privilege.erl11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mod_privilege.erl b/src/mod_privilege.erl
index b6e56ead..9ca78f67 100644
--- a/src/mod_privilege.erl
+++ b/src/mod_privilege.erl
@@ -269,9 +269,16 @@ handle_info(Info, State) ->
{noreply, State}.
terminate(_Reason, State) ->
- %% Note: we don't remove component_* hooks because they are global
- %% and might be registered within a module on another virtual host
Host = State#state.server_host,
+ case gen_mod:is_loaded_elsewhere(Host, ?MODULE) of
+ false ->
+ ejabberd_hooks:delete(component_connected, ?MODULE,
+ component_connected, 50),
+ ejabberd_hooks:delete(component_disconnected, ?MODULE,
+ component_disconnected, 50);
+ true ->
+ ok
+ end,
ejabberd_hooks:delete(local_send_to_resource_hook, Host, ?MODULE,
process_message, 50),
ejabberd_hooks:delete(roster_remote_access, Host, ?MODULE,