aboutsummaryrefslogtreecommitdiff
path: root/src/mod_privacy.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_privacy.erl')
-rw-r--r--src/mod_privacy.erl20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl
index 50008053e..5aa816975 100644
--- a/src/mod_privacy.erl
+++ b/src/mod_privacy.erl
@@ -31,7 +31,7 @@
-behaviour(gen_mod).
--export([start/2, stop/1, process_iq/1, export/1, import_info/0,
+-export([start/2, stop/1, reload/3, process_iq/1, export/1, import_info/0,
c2s_session_opened/1, c2s_copy_session/2, push_list_update/3,
user_send_packet/1, user_receive_packet/1, disco_features/5,
check_packet/4, remove_user/2, encode_list_item/1,
@@ -99,6 +99,24 @@ stop(Host) ->
gen_iq_handler:remove_iq_handler(ejabberd_sm, Host,
?NS_PRIVACY).
+reload(Host, NewOpts, OldOpts) ->
+ NewMod = gen_mod:db_mod(Host, NewOpts, ?MODULE),
+ OldMod = gen_mod:db_mod(Host, OldOpts, ?MODULE),
+ if NewMod /= OldMod ->
+ NewMod:init(Host, NewOpts);
+ true ->
+ ok
+ end,
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts,
+ fun gen_iq_handler:check_type/1,
+ one_queue) of
+ {false, IQDisc, _} ->
+ gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_PRIVACY,
+ ?MODULE, process_iq, IQDisc);
+ true ->
+ ok
+ end.
+
-spec disco_features({error, stanza_error()} | {result, [binary()]} | empty,
jid(), jid(), binary(), binary()) ->
{error, stanza_error()} | {result, [binary()]}.