diff options
author | Christophe Romain <christophe.romain@process-one.net> | 2008-07-03 13:56:31 +0400 |
---|---|---|
committer | Christophe Romain <christophe.romain@process-one.net> | 2008-07-03 13:56:31 +0400 |
commit | 35d25d3420c267b52c33b6d46956c8e05920b17e (patch) | |
tree | ce69b2d9b5bf5e62a2462fd5133cd9fad4481144 /src/ejabberd_local.erl | |
parent | 2ccf410a7574bdb76402f75849841425322a6887 (diff) |
PubSub improvements, and solves (EJAB-453) (EJAB-608)
SVN Revision: 1408
Diffstat (limited to 'src/ejabberd_local.erl')
-rw-r--r-- | src/ejabberd_local.erl | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl index b54173581..67f5b9636 100644 --- a/src/ejabberd_local.erl +++ b/src/ejabberd_local.erl @@ -37,6 +37,7 @@ register_iq_handler/5, register_iq_response_handler/4, unregister_iq_handler/2, + unregister_iq_response_handler/2, refresh_iq_handlers/0, bounce_resource_packet/3 ]). @@ -138,6 +139,9 @@ register_iq_handler(Host, XMLNS, Module, Fun) -> register_iq_handler(Host, XMLNS, Module, Fun, Opts) -> ejabberd_local ! {register_iq_handler, Host, XMLNS, Module, Fun, Opts}. +unregister_iq_response_handler(Host, ID) -> + ejabberd_local ! {unregister_iq_response_handler, Host, ID}. + unregister_iq_handler(Host, XMLNS) -> ejabberd_local ! {unregister_iq_handler, Host, XMLNS}. @@ -214,6 +218,9 @@ handle_info({route, From, To, Packet}, State) -> handle_info({register_iq_response_handler, _Host, ID, Module, Function}, State) -> mnesia:dirty_write(#iq_response{id = ID, module = Module, function = Function}), {noreply, State}; +handle_info({unregister_iq_response_handler, _Host, ID}, State) -> + mnesia:dirty_delete({iq_response, ID}), + {noreply, State}; handle_info({register_iq_handler, Host, XMLNS, Module, Function}, State) -> ets:insert(?IQTABLE, {{XMLNS, Host}, Module, Function}), catch mod_disco:register_feature(Host, XMLNS), |