Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2003-01-29 20:12:23 +0300
committerAlexey Shchepin <alexey@process-one.net>2003-01-29 20:12:23 +0300
commit9a3a723f1b0cbabf1017f27fafe7a5f0fd4a0eef (patch)
tree00e57c2b15ecf6f84fe99de7f983f5d5ec3c193c /src/ejabberd_local.erl
parent275b31b0cf7c91a549a996b9c714def5bac5c4a4 (diff)
*** empty log message ***
SVN Revision: 53
Diffstat (limited to 'src/ejabberd_local.erl')
-rw-r--r--src/ejabberd_local.erl20
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}.
+