summaryrefslogtreecommitdiff
path: root/src/ejabberd_sm.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-14 10:25:08 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-14 10:25:08 +0300
commitf664e39374875d486185a59cabdd50971d2631f6 (patch)
tree70edea452d35b390dcbfaba4c9dfb63699923cbd /src/ejabberd_sm.erl
parentCheck 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.erl37
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(