aboutsummaryrefslogtreecommitdiff
path: root/src/mod_disco.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_disco.erl')
-rw-r--r--src/mod_disco.erl10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mod_disco.erl b/src/mod_disco.erl
index e4063f13a..af992df0b 100644
--- a/src/mod_disco.erl
+++ b/src/mod_disco.erl
@@ -33,6 +33,8 @@
{"node", SNode}], []}]}).
start(Opts) ->
+ ejabberd_local:refresh_iq_handlers(),
+
IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
gen_iq_handler:add_iq_handler(ejabberd_local, ?NS_DISCO_ITEMS,
?MODULE, process_local_iq_items, IQDisc),
@@ -42,9 +44,12 @@ start(Opts) ->
?MODULE, process_sm_iq_items, IQDisc),
gen_iq_handler:add_iq_handler(ejabberd_sm, ?NS_DISCO_INFO,
?MODULE, process_sm_iq_info, IQDisc),
+
+ catch ets:new(disco_features, [named_table, ordered_set, public]),
register_feature("iq"),
register_feature("presence"),
register_feature("presence-invisible"),
+
catch ets:new(disco_extra_domains, [named_table, ordered_set, public]),
ExtraDomains = gen_mod:get_opt(extra_domains, Opts, []),
lists:foreach(fun register_extra_domain/1, ExtraDomains),
@@ -54,7 +59,10 @@ stop() ->
gen_iq_handler:remove_iq_handler(ejabberd_local, ?NS_DISCO_ITEMS),
gen_iq_handler:remove_iq_handler(ejabberd_local, ?NS_DISCO_INFO),
gen_iq_handler:remove_iq_handler(ejabberd_sm, ?NS_DISCO_ITEMS),
- gen_iq_handler:remove_iq_handler(ejabberd_sm, ?NS_DISCO_INFO).
+ gen_iq_handler:remove_iq_handler(ejabberd_sm, ?NS_DISCO_INFO),
+ catch ets:delete(disco_features),
+ catch ets:delete(disco_extra_domains),
+ ok.
register_feature(Feature) ->