diff options
Diffstat (limited to 'src/mod_privacy.erl')
-rw-r--r-- | src/mod_privacy.erl | 20 |
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()]}. |