From 3cc964fbcc7ba46686e9422b3a6eb38bc0eb21d5 Mon Sep 17 00:00:00 2001 From: Evgeny Khramtsov Date: Tue, 18 Sep 2018 13:22:34 +0300 Subject: [PATCH] Fix listeners child specs creation --- src/ejabberd_listener.erl | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/ejabberd_listener.erl b/src/ejabberd_listener.erl index 677429da2..226978592 100644 --- a/src/ejabberd_listener.erl +++ b/src/ejabberd_listener.erl @@ -62,33 +62,31 @@ start_link() -> init(_) -> ets:new(?MODULE, [named_table, public]), ejabberd_hooks:add(config_reloaded, ?MODULE, config_reloaded, 50), - case listeners_childspec() of - {ok, Specs} -> {ok, {{one_for_one, 10, 1}, Specs}}; - {error, _} = Err -> Err - end. - --spec listeners_childspec() -> {ok, [supervisor:child_spec()]} | {error, any()}. -listeners_childspec() -> - Ls = ejabberd_config:get_option(listen, []), - case add_certfiles(Ls) of + Listeners = ejabberd_config:get_option(listen, []), + case add_certfiles(Listeners) of ok -> - {ok, lists:map( - fun({EndPoint, Module, Opts}) -> - ets:insert(?MODULE, {EndPoint, Module, Opts}), - {EndPoint, - {?MODULE, start, [EndPoint, Module, Opts]}, - transient, brutal_kill, worker, [?MODULE]} - end, Ls)}; + {ok, {{one_for_one, 10, 1}, listeners_childspec(Listeners)}}; {error, _} = Err -> Err end. +-spec listeners_childspec([listener()]) -> [supervisor:child_spec()]. +listeners_childspec(Listeners) -> + lists:map( + fun({EndPoint, Module, Opts}) -> + ets:insert(?MODULE, {EndPoint, Module, Opts}), + {EndPoint, + {?MODULE, start, [EndPoint, Module, Opts]}, + transient, brutal_kill, worker, [?MODULE]} + end, Listeners). + -spec start_listeners() -> ok. start_listeners() -> + Listeners = ejabberd_config:get_option(listen, []), lists:foreach( fun(Spec) -> supervisor:start_child(?MODULE, Spec) - end, listeners_childspec()). + end, listeners_childspec(Listeners)). -spec start(endpoint(), module(), listen_opts()) -> term(). start(EndPoint, Module, Opts) ->