aboutsummaryrefslogtreecommitdiff
path: root/src/mod_caps.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_caps.erl')
-rw-r--r--src/mod_caps.erl27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/mod_caps.erl b/src/mod_caps.erl
index e23b66895..42a5d94df 100644
--- a/src/mod_caps.erl
+++ b/src/mod_caps.erl
@@ -41,7 +41,7 @@
get_user_caps/2, import_start/2, import_stop/2]).
%% gen_mod callbacks
--export([start/2, stop/1, depends/2]).
+-export([start/2, stop/1, reload/3, depends/2]).
%% gen_server callbacks
-export([init/1, handle_info/2, handle_call/3,
@@ -238,6 +238,31 @@ c2s_presence_in(C2SState,
depends(_Host, _Opts) ->
[].
+reload(Host, NewOpts, OldOpts) ->
+ NewMod = gen_mod:db_mod(Host, NewOpts, ?MODULE),
+ OldMod = gen_mod:db_mod(Host, OldOpts, ?MODULE),
+ if OldMod /= NewMod ->
+ NewMod:init(Host, NewOpts);
+ true ->
+ ok
+ end,
+ case gen_mod:is_equal_opt(cache_size, NewOpts, OldOpts,
+ fun(I) when is_integer(I), I>0 -> I end,
+ 1000) of
+ {false, MaxSize, _} ->
+ cache_tab:setopts(caps_features, [{max_size, MaxSize}]);
+ true ->
+ ok
+ end,
+ case gen_mod:is_equal_opt(cache_life_time, NewOpts, OldOpts,
+ fun(I) when is_integer(I), I>0 -> I end,
+ timer:hours(24) div 1000) of
+ {false, LifeTime, _} ->
+ cache_tab:setopts(caps_features, [{life_time, LifeTime}]);
+ true ->
+ ok
+ end.
+
init([Host, Opts]) ->
process_flag(trap_exit, true),
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),