diff options
Diffstat (limited to 'src/ejabberd_local.erl')
-rw-r--r-- | src/ejabberd_local.erl | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl index f80d97249..bd9a1b2e4 100644 --- a/src/ejabberd_local.erl +++ b/src/ejabberd_local.erl @@ -152,7 +152,7 @@ register_iq_response_handler(_Host, ID, Module, undefined -> ?IQ_TIMEOUT; N when is_integer(N), N > 0 -> N end, - TRef = erlang:start_timer(Timeout, ejabberd_local, ID), + TRef = erlang:start_timer(Timeout, ?MODULE, ID), mnesia:dirty_write(#iq_response{id = ID, module = Module, function = Function, @@ -161,9 +161,8 @@ register_iq_response_handler(_Host, ID, Module, -spec register_iq_handler(binary(), binary(), module(), function(), gen_iq_handler:opts()) -> ok. register_iq_handler(Host, XMLNS, Module, Fun, Opts) -> - ejabberd_local ! - {register_iq_handler, Host, XMLNS, Module, Fun, Opts}, - ok. + gen_server:cast(?MODULE, + {register_iq_handler, Host, XMLNS, Module, Fun, Opts}). -spec unregister_iq_response_handler(binary(), binary()) -> ok. unregister_iq_response_handler(_Host, ID) -> @@ -171,8 +170,7 @@ unregister_iq_response_handler(_Host, ID) -> -spec unregister_iq_handler(binary(), binary()) -> ok. unregister_iq_handler(Host, XMLNS) -> - ejabberd_local ! {unregister_iq_handler, Host, XMLNS}, - ok. + gen_server:cast(?MODULE, {unregister_iq_handler, Host, XMLNS}). -spec bounce_resource_packet(jid(), jid(), stanza()) -> stop. bounce_resource_packet(_From, #jid{lresource = <<"">>}, #presence{}) -> @@ -222,23 +220,13 @@ init([]) -> handle_call(_Request, _From, State) -> Reply = ok, {reply, Reply, State}. -handle_cast(_Msg, State) -> {noreply, State}. - -handle_info({route, From, To, Packet}, State) -> - case catch do_route(From, To, Packet) of - {'EXIT', Reason} -> - ?ERROR_MSG("~p~nwhen processing: ~p", - [Reason, {From, To, Packet}]); - _ -> ok - end, - {noreply, State}; -handle_info({register_iq_handler, Host, XMLNS, Module, +handle_cast({register_iq_handler, Host, XMLNS, Module, Function, Opts}, State) -> ets:insert(?IQTABLE, {{Host, XMLNS}, Module, Function, Opts}), {noreply, State}; -handle_info({unregister_iq_handler, Host, XMLNS}, +handle_cast({unregister_iq_handler, Host, XMLNS}, State) -> case ets:lookup(?IQTABLE, {Host, XMLNS}) of [{_, Module, Function, Opts}] -> @@ -247,10 +235,21 @@ handle_info({unregister_iq_handler, Host, XMLNS}, end, ets:delete(?IQTABLE, {Host, XMLNS}), {noreply, State}; +handle_cast(_Msg, State) -> {noreply, State}. + +handle_info({route, From, To, Packet}, State) -> + case catch do_route(From, To, Packet) of + {'EXIT', Reason} -> + ?ERROR_MSG("~p~nwhen processing: ~p", + [Reason, {From, To, Packet}]); + _ -> ok + end, + {noreply, State}; handle_info({timeout, _TRef, ID}, State) -> process_iq_timeout(ID), {noreply, State}; -handle_info(_Info, State) -> +handle_info(Info, State) -> + ?WARNING_MSG("unexpected info: ~p", [Info]), {noreply, State}. terminate(_Reason, _State) -> |