diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-14 10:25:08 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-14 10:25:08 +0300 |
commit | f664e39374875d486185a59cabdd50971d2631f6 (patch) | |
tree | 70edea452d35b390dcbfaba4c9dfb63699923cbd /src/ejabberd_sm.erl | |
parent | Check result of gen_mod:start/2 callback (#1534) (diff) |
Improve modules start/stop procedures
Diffstat (limited to 'src/ejabberd_sm.erl')
-rw-r--r-- | src/ejabberd_sm.erl | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl index 62f250d5..12bfb4e1 100644 --- a/src/ejabberd_sm.erl +++ b/src/ejabberd_sm.erl @@ -358,14 +358,13 @@ get_vh_session_number(Server) -> -spec register_iq_handler(binary(), binary(), atom(), atom(), list()) -> ok. register_iq_handler(Host, XMLNS, Module, Fun, Opts) -> - ejabberd_sm ! {register_iq_handler, Host, XMLNS, Module, Fun, Opts}, - ok. + gen_server:cast(?MODULE, + {register_iq_handler, Host, XMLNS, Module, Fun, Opts}). -spec unregister_iq_handler(binary(), binary()) -> ok. unregister_iq_handler(Host, XMLNS) -> - ejabberd_sm ! {unregister_iq_handler, Host, XMLNS}, - ok. + gen_server:cast(?MODULE, {unregister_iq_handler, Host, XMLNS}). %% Why the hell do we have so many similar kicks? c2s_handle_info(#{lang := Lang} = State, replaced) -> @@ -408,24 +407,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(sm_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(sm_iqtable, {Host, XMLNS}) of [{_, Module, Function, Opts}] -> @@ -434,7 +422,20 @@ handle_info({unregister_iq_handler, Host, XMLNS}, end, ets:delete(sm_iqtable, {Host, XMLNS}), {noreply, State}; -handle_info(_Info, State) -> {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(Info, State) -> + ?WARNING_MSG("unexpected info: ~p", [Info]), + {noreply, State}. terminate(_Reason, _State) -> lists:foreach( |