summaryrefslogtreecommitdiff
path: root/src/ejabberd_listener.erl
diff options
context:
space:
mode:
authorPaweł Chmielowski <pawel@process-one.net>2022-06-21 11:09:37 +0200
committerPaweł Chmielowski <pawel@process-one.net>2022-06-21 11:09:37 +0200
commit06147deccddf8a6a43dfc012d2586fd0e363869a (patch)
tree5691334d14bfea5abcf9ef12d85c42572d4166ef /src/ejabberd_listener.erl
parentDefine batch delete function types in coresponding behaviours (diff)
Don't register listeners that failed to start in config reload
This should alleviate some issues in #3850
Diffstat (limited to '')
-rw-r--r--src/ejabberd_listener.erl16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/ejabberd_listener.erl b/src/ejabberd_listener.erl
index 9c962be6..309e167d 100644
--- a/src/ejabberd_listener.erl
+++ b/src/ejabberd_listener.erl
@@ -457,11 +457,19 @@ config_reloaded() ->
ok;
{_, OldModule, OldOpts} ->
_ = stop_listener(EndPoint, OldModule, OldOpts),
- ets:insert(?MODULE, {EndPoint, Module, Opts}),
- start_listener(EndPoint, Module, Opts);
+ case start_listener(EndPoint, Module, Opts) of
+ {ok, _} ->
+ ets:insert(?MODULE, {EndPoint, Module, Opts});
+ _ ->
+ ok
+ end;
false ->
- ets:insert(?MODULE, {EndPoint, Module, Opts}),
- start_listener(EndPoint, Module, Opts)
+ case start_listener(EndPoint, Module, Opts) of
+ {ok, _} ->
+ ets:insert(?MODULE, {EndPoint, Module, Opts});
+ _ ->
+ ok
+ end
end
end, New).