为什么ejabberd在关闭c2s进程之前会停止模块?

时间:2016-05-31 07:23:40

标签: erlang xmpp ejabberd ejabberd-module ejabberd-hooks

我在ejabberd中添加了gen_mod行为之后的一些模块以实现我的私有服务,并在这些模块中添加一些钩子。这大部分时间都适用。

  ejabberd_hooks:add(unset_presence_hook, Host,
    ?MODULE, unset_presence_hook, 10),

但是当我调用ejabberdctl停止时,ejabberd会执行以下代码,我发现 gen_mod:stop_modules()broadcast_c2s_shutdown()之前完成, ejabberd_c2s中的一些钩子,例如"取消设置状态挂钩" ,因为我的模块已经关闭所以无法进行。

prep_stop(State) ->
    ejabberd_listener:stop_listeners(),
    gen_mod:stop_modules(),
    ejabberd_admin:stop(),
    broadcast_c2s_shutdown(),
    timer:sleep(5000),
    State.

我想知道为什么ejabberd会在关闭c2s进程之前停止模块, 或者这个设计的目的是什么?

0 个答案:

没有答案