diff options
author | Alexey Shchepin <alexey@process-one.net> | 2003-01-29 20:12:23 +0300 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2003-01-29 20:12:23 +0300 |
commit | 9a3a723f1b0cbabf1017f27fafe7a5f0fd4a0eef (patch) | |
tree | 00e57c2b15ecf6f84fe99de7f983f5d5ec3c193c /src/ejabberd_local.erl | |
parent | 275b31b0cf7c91a549a996b9c714def5bac5c4a4 (diff) |
*** empty log message ***
SVN Revision: 53
Diffstat (limited to 'src/ejabberd_local.erl')
-rw-r--r-- | src/ejabberd_local.erl | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl index c567cbfa6..e0415b0d2 100644 --- a/src/ejabberd_local.erl +++ b/src/ejabberd_local.erl @@ -13,7 +13,9 @@ -export([start/0, init/0]). -export([register_iq_handler/3, - register_iq_handler/4]). + register_iq_handler/4, + unregister_iq_handler/1 + ]). -include("ejabberd.hrl"). @@ -41,6 +43,18 @@ loop(State) -> {register_iq_handler, XMLNS, Module, Function, Opts} -> ets:insert(State#state.iqtable, {XMLNS, Module, Function, Opts}), mod_disco:register_feature(XMLNS), + loop(State); + {unregister_iq_handler, XMLNS} -> + case ets:lookup(State#state.iqtable, XMLNS) of + [{_, Module, Function, Opts}] -> + gen_iq_handler:stop_iq_handler(Module, Function, Opts); + _ -> + ok + end, + ets:delete(State#state.iqtable, XMLNS), + mod_disco:unregister_feature(XMLNS), + loop(State); + _ -> loop(State) end. @@ -117,3 +131,7 @@ register_iq_handler(XMLNS, Module, Fun) -> register_iq_handler(XMLNS, Module, Fun, Opts) -> ejabberd_local ! {register_iq_handler, XMLNS, Module, Fun, Opts}. + +unregister_iq_handler(XMLNS) -> + ejabberd_local ! {unregister_iq_handler, XMLNS}. + |